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 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.lock b/Cargo.lock index da47b08c7df5..4bea3af7f3bf 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", @@ -5025,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", ] @@ -5053,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", @@ -5073,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", @@ -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" @@ -5380,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", @@ -5556,7 +5576,6 @@ dependencies = [ "lazy_static", "miropt-test-tools", "regex", - "semver", "termcolor", "walkdir", ] 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/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) ========================== 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/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/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/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 3634e6e47ce1..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) @@ -689,8 +692,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 = @@ -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/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 ea30bed5ace4..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 @@ -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_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_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_ast_pretty/src/pprust/state/expr.rs b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs index 3b17f6dd627e..2a18e5164a30 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); @@ -471,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/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 d99bfc01a429..6658ee89ad6f 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) @@ -1739,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/diagnostics/explain_borrow.rs b/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs index c4ae30151c4b..2095747097b7 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 09ef84f7cbb8..b9cfc7e69610 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: @@ -639,7 +639,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)) => { @@ -1212,7 +1212,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 579ce90a760f..9233287cf3a7 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. pub(crate) 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(()) } 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/region_infer/opaque_types.rs b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs index d82d4cc39fb1..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; @@ -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/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/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/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/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 247607ff29e2..81bd4c2a783e 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, @@ -208,7 +209,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() @@ -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); } } @@ -1723,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/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_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_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_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 7aadcdd22287..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. @@ -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 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/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/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, 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_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_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/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/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_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_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 54213d55a2da..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); } @@ -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; } @@ -782,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 @@ -802,6 +817,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: None, }); return; } @@ -844,6 +860,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: None, }); return; } @@ -903,6 +920,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/mod.rs b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs index 0a90572d39e3..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}; +use rustc_middle::ty::{self, PolyFnSig, TyCtxt}; 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/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"); } 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_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_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/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_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_driver/src/lib.rs b/compiler/rustc_driver/src/lib.rs index 3cbe0052359b..16f64235562f 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); @@ -1196,8 +1197,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 +1236,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_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 76d5da19399e..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 /!\ @@ -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,8 @@ 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"), E0720: include_str!("./error_codes/E0720.md"), @@ -540,7 +544,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` @@ -571,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 @@ -615,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 @@ -633,14 +636,11 @@ 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/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/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/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/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_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. 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/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_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 2eb409a5ddd5..d63ff77d8e25 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -15,6 +15,43 @@ 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 + .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 + +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 + +lint_renamed_or_removed_lint = {$msg} + .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 -> @@ -55,6 +92,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 @@ -331,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 @@ -391,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 @@ -403,6 +450,16 @@ 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_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_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 60d3d3e69abb..a082c0b61fa7 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 -> @@ -299,3 +303,64 @@ 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)]` + +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_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 + +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 {$remainder} more + } not covered + +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 = 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_error_messages/locales/en-US/parse.ftl b/compiler/rustc_error_messages/locales/en-US/parse.ftl index 3401978caf5f..8f063f5082c9 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 @@ -368,3 +372,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_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_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/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_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index 0ca200abe19f..628e19999215 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( @@ -1790,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()); @@ -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 { @@ -2526,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_errors/src/error.rs b/compiler/rustc_errors/src/error.rs new file mode 100644 index 000000000000..ec0a2fe8cd8d --- /dev/null +++ b/compiler/rustc_errors/src/error.rs @@ -0,0 +1,137 @@ +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, "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")?; + writeln!(f, "help: add `.{attr} = `")?; + } + 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/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 b4d23e96f8f4..535812fb0e22 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] @@ -40,8 +44,8 @@ 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::error::Report; use std::fmt; use std::hash::Hash; use std::num::NonZeroUsize; @@ -55,11 +59,14 @@ mod diagnostic; mod diagnostic_builder; mod diagnostic_impls; pub mod emitter; +pub mod error; pub mod json; mod lock; pub mod registry; mod snippet; mod styled_buffer; +#[cfg(test)] +mod tests; pub mod translation; pub use diagnostic_builder::IntoDiagnostic; @@ -364,9 +371,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 +406,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 +512,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 +523,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, ); } @@ -622,7 +624,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; @@ -1223,11 +1232,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 +1292,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 +1569,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 +1611,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 +1640,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); } } diff --git a/compiler/rustc_errors/src/tests.rs b/compiler/rustc_errors/src/tests.rs new file mode 100644 index 000000000000..52103e460977 --- /dev/null +++ b/compiler/rustc_errors/src/tests.rs @@ -0,0 +1,188 @@ +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"); + + #[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."); + + 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 afd660ff1bf1..addfc9726ca4 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. @@ -46,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::(), ) } @@ -55,83 +57,56 @@ 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), }; + 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 - }) - .expect("failed to find message in primary or fallback fluent bundles") + 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))?, + } + } } } 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_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. @@ -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/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 {} 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_analysis/src/astconv/errors.rs b/compiler/rustc_hir_analysis/src/astconv/errors.rs index e6465d641f1e..232ef2079d6b 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 @@ -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 f64d65cc6ad7..7a499327dbf2 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 9a111cb8609f..6a673e8ae4e3 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::{ @@ -106,11 +109,12 @@ 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>; + /// 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 @@ -119,6 +123,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)] @@ -278,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 @@ -348,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, @@ -485,14 +496,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 { @@ -530,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, @@ -616,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 @@ -810,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) } @@ -989,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. @@ -1267,7 +1271,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( @@ -1494,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; @@ -1832,7 +1836,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. @@ -1860,7 +1864,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 Some(adt_def) = self.probe_adt(span, qself_ty) { if adt_def.is_enum() { let variant_def = adt_def .variants() @@ -1962,6 +1966,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, @@ -1969,7 +1977,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)); } } @@ -2066,7 +2073,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( @@ -2202,7 +2208,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>( @@ -2305,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; } } @@ -2319,6 +2325,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 @@ -2386,8 +2393,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() { @@ -2463,7 +2470,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 @@ -2483,7 +2490,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( @@ -2623,7 +2630,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) => { @@ -2687,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) } @@ -2766,8 +2773,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 { @@ -2777,8 +2783,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_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/check.rs b/compiler/rustc_hir_analysis/src/check/check.rs index 28cd18bbb8e8..43795cfba3fd 100644 --- a/compiler/rustc_hir_analysis/src/check/check.rs +++ b/compiler/rustc_hir_analysis/src/check/check.rs @@ -468,14 +468,14 @@ 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, ); } } // 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_analysis/src/check/compare_impl_item.rs b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs index 0d3391bbc1ef..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 @@ -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. } _ => { @@ -615,7 +615,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, )?; @@ -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. @@ -1643,8 +1643,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(()) } @@ -1752,7 +1753,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, )?; @@ -1966,27 +1967,11 @@ 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, )?; - 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(()) } 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/wfcheck.rs b/compiler/rustc_hir_analysis/src/check/wfcheck.rs index 969f7de51ceb..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 _; @@ -116,7 +117,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/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 bfedf63da97a..74179a2bc68c 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); } } _ => { @@ -436,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 @@ -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/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.rs b/compiler/rustc_hir_analysis/src/collect.rs index 7afde550b42a..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, @@ -505,9 +504,9 @@ 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 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) { @@ -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/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/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/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 18fc43ce15cb..d43a2d72cecc 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!(), }; @@ -253,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 { @@ -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/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/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_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs index 2058832d5fdc..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 @@ -84,6 +84,7 @@ extern crate rustc_middle; pub mod check; pub mod astconv; +pub mod autoderef; mod bounds; mod check_unused; mod coherence; @@ -541,10 +542,10 @@ 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()); - >::ast_ty_to_ty(&item_cx, hir_ty) + item_cx.astconv().ast_ty_to_ty(hir_ty) } pub fn hir_trait_to_predicates<'tcx>( @@ -554,12 +555,11 @@ 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(); - 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_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_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_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 2cb976f718c2..8d417290407e 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}; @@ -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 _; @@ -496,15 +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, - 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/closure.rs b/compiler/rustc_hir_typeck/src/closure.rs index 3453da500b98..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. @@ -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/coercion.rs b/compiler/rustc_hir_typeck/src/coercion.rs index 9e91a3f90764..bbf7b81a2cc6 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 @@ -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). @@ -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/demand.rs b/compiler/rustc_hir_typeck/src/demand.rs index f68a428d09ae..6c128d0aa1a6 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,19 +558,19 @@ 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, - probe::IsSuggestion(true), self_ty, - deref.hir_id, + deref, probe::ProbeScope::TraitsInScope, + None, ) else { return; }; 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 +582,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, @@ -1832,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>, ) { @@ -1850,10 +1852,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`. + // `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. + expectation = None; } let hir::ExprKind::Call(method_name, _) = expr.kind else { return; }; let ty::Adt(adt, _) = checked_ty.kind() else { return; }; @@ -1869,13 +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, - 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 b08b22108c8c..bc7474cdfcf3 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(), @@ -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 @@ -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); @@ -2423,10 +2431,11 @@ 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, + 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, @@ -2452,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/fallback.rs b/compiler/rustc_hir_typeck/src/fallback.rs index ac6b0924ab57..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 @@ -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 634688de01a6..8570715b41e5 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}; @@ -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, @@ -24,7 +27,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 +164,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>) { @@ -410,23 +372,38 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - pub fn to_ty(&self, ast_t: &hir::Ty<'_>) -> Ty<'tcx> { - let t = >::ast_ty_to_ty(self, ast_t); + 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 = self.astconv().ast_ty_to_ty(ast_t); self.register_wf_obligation(t.into(), ast_t.span, traits::WellFormed(None)); - t + self.handle_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(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> { @@ -696,8 +673,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() @@ -780,7 +757,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 +780,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 = self.astconv().ast_ty_to_ty_in_path(qself); + (self.handle_raw_ty(span, ty), qself, segment) } QPath::LangItem(..) => { bug!("`resolve_ty_and_res_fully_qualified_call` called on `LangItem`") @@ -811,7 +789,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 +797,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,17 +808,22 @@ 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, None, + Expectation::NoExpectation, ) { e.emit(); } @@ -849,7 +832,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 +969,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, @@ -995,8 +978,12 @@ 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, + Res::Def(kind, def_id) => self.astconv().def_ids_for_value_path_segments( + segments, + self_ty.map(|ty| ty.raw), + kind, + def_id, + span, ), _ => bug!("instantiate_value_path on {:?}", res), }; @@ -1007,8 +994,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 +1014,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 }); } } @@ -1042,8 +1029,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) @@ -1084,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, @@ -1109,19 +1095,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 = self.normalize_ty(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(); - 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?"); @@ -1190,10 +1178,10 @@ 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).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() @@ -1225,10 +1213,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); - self.fcx - .normalize_ty(self.span, default.subst(tcx, substs.unwrap())) - .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. @@ -1250,13 +1235,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - let substs = self_ctor_substs.unwrap_or_else(|| { - >::create_substs_for_generic_args( + 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 +1254,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 +1275,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..b9e13fd20092 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -5,11 +5,11 @@ 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; -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}; @@ -1231,31 +1231,35 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); return None; } - Res::Def(DefKind::Variant, _) => match ty.kind() { - ty::Adt(adt, substs) => Some((adt.variant_of_res(def), adt.did(), substs)), - _ => bug!("unexpected type: {:?}", ty), + 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.kind() { - ty::Adt(adt, substs) if !adt.is_enum() => { - Some((adt.non_enum_variant(), adt.did(), substs)) + | 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)) = variant { + if let Some((variant, did, ty::UserSubsts { substs, user_self_ty })) = variant { debug!("check_struct_path: did={:?} substs={:?}", did, substs); - self.write_user_type_annotation_from_substs(hir_id, did, substs, None); + + // Register type annotation. + 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); - 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 ty = >::res_to_ty(self, self_ty, path, true); - (path.res, ty) + let self_ty = maybe_qself.as_ref().map(|qself| self.to_ty(qself).raw); + 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, 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)); // 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.handle_raw_ty(path_span, ty)) } } } @@ -1698,7 +1704,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 { @@ -1726,6 +1732,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 diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs index 30b59da7852d..428fde642bc0 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs @@ -17,11 +17,10 @@ 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}; +use rustc_span::{self, Span, DUMMY_SP}; use rustc_trait_selection::traits::{ObligationCause, ObligationCauseCode, ObligationCtxt}; use std::cell::{Cell, RefCell}; @@ -176,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 + }), } } @@ -287,8 +294,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, @@ -298,11 +304,14 @@ 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> { - 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 +319,21 @@ 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) { + fn record_ty(&self, hir_id: hir::HirId, ty: Ty<'tcx>, span: Span) { + // 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) } } + +/// 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/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 236bdc60e677..156c02149e7c 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; @@ -442,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![( @@ -639,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); @@ -783,7 +793,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 +864,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 +902,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 +956,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,10 +1349,11 @@ 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), + Some(expected_ty), IsSuggestion(true), self_ty, expr.hir_id, 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/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/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/lib.rs b/compiler/rustc_hir_typeck/src/lib.rs index 99e09b86a232..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) { @@ -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/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/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index 218c54688aa3..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}; @@ -12,7 +15,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; @@ -89,7 +93,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 @@ -330,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, @@ -368,11 +372,10 @@ 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).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 +400,8 @@ 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 +409,47 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { None, &arg_count_correct, &mut MethodSubstsCtxt { cfcx: self, pick, seg }, - ) + ); + + // 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) } fn unify_receivers( diff --git a/compiler/rustc_hir_typeck/src/method/mod.rs b/compiler/rustc_hir_typeck/src/method/mod.rs index d276bcdb81e3..b810a967a245 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, } } @@ -130,17 +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, - 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); @@ -221,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 }); } @@ -252,12 +258,13 @@ 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( probe::Mode::MethodCall, method_name, + None, IsSuggestion(false), self_ty, call_expr.hir_id, @@ -267,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>, @@ -386,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.) // @@ -484,6 +511,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 2daf1979ee5e..dd827777df94 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::{ @@ -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, @@ -1540,7 +1542,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { let InferOk { value: normalized_xform_ret_ty, obligations: normalization_obligations, - } = self.fcx.at(&cause, self.param_env).normalize(probe.xform_ret_ty); + } = 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); @@ -1554,7 +1556,23 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { // Convert the bounds into obligations. let impl_obligations = traits::predicates_for_generics( - move |_, _| 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, ); @@ -1597,7 +1615,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,22 +1674,48 @@ 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(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 + ); + if let ProbeResult::Match = result + && self + .at(&ObligationCause::dummy(), self.param_env) + .define_opaque_types(false) + .sup(return_ty, xform_ret_ty) + .is_err() + { + result = ProbeResult::BadReturnType; + } } result @@ -1685,7 +1729,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/method/suggest.rs b/compiler/rustc_hir_typeck/src/method/suggest.rs index 536c42706595..8166eb829904 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}; @@ -100,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, @@ -108,6 +110,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 +134,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { args, sugg_span, &mut no_match_data, + expected, ); } @@ -250,6 +254,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 +325,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) = @@ -366,8 +371,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() }); } @@ -577,22 +587,19 @@ 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 + 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))) .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. @@ -608,10 +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(span, derive_msg); - let entry = spanned_predicates.entry(spans); - entry.or_insert_with(|| (path, tr_self_ty, Vec::new())).2.push(p); + 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", + )); + entry.2.push(p); + skip_list.insert(p); } // Unmet obligation coming from an `impl`. @@ -638,8 +652,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, ); @@ -650,25 +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_msg); - 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(|| (path, tr_self_ty, Vec::new())).2.push(p); + entry.1.insert((self_ty.span, "")); } Some(Node::Item(hir::Item { kind: hir::ItemKind::Trait(rustc_ast::ast::IsAuto::Yes, ..), @@ -685,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); + for (_, (primary_spans, span_labels, predicates)) in spanned_predicates { + let mut preds: Vec<_> = predicates + .iter() + .filter_map(|pred| format_pred(**pred)) .map(|(p, _)| format!("`{}`", p)) .collect(); preds.sort(); @@ -699,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; } @@ -898,7 +914,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 +945,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &unsatisfied_predicates, &static_candidates, unsatisfied_bounds, + expected.only_has_type(self), ); } @@ -987,7 +1011,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); } @@ -1374,13 +1398,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, - 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()); @@ -1560,11 +1583,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(); @@ -1587,6 +1611,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,11 +1635,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.check_for_nested_field_satisfying( span, &|_, field_ty| { - self.lookup_probe( + self.lookup_probe_for_diagnostic( item_name, field_ty, call_expr, ProbeScope::TraitsInScope, + return_type, ) .map_or(false, |pick| { !never_mention_traits @@ -1680,9 +1706,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(); @@ -1746,11 +1778,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); @@ -2010,12 +2043,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 +2115,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 +2236,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 +2259,13 @@ 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.lookup_probe_for_diagnostic( + item_name, + *rcvr_ty, + rcvr, + ProbeScope::AllTraits, + return_type, + ) { 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,11 +2298,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.lookup_probe( + && let Ok(pick) = self.lookup_probe_for_diagnostic( item_name, new_rcvr_t, rcvr, ProbeScope::AllTraits, + return_type, ) { debug!("try_alt_rcvr: pick candidate {:?}", pick); @@ -2637,11 +2682,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 diff --git a/compiler/rustc_hir_typeck/src/pat.rs b/compiler/rustc_hir_typeck/src/pat.rs index e0304fa2d3b9..46799245222d 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::{ @@ -761,6 +761,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( @@ -842,7 +859,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_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_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_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_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/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..3d49182f0b81 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>, @@ -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/combine.rs b/compiler/rustc_infer/src/infer/combine.rs index 9a1c49c1aa6a..72676b718fab 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, @@ -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/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/mod.rs index 5c3e9a2d5ccc..080ae6b94669 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<'_, '_> { @@ -310,7 +315,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 +1400,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) @@ -2144,18 +2149,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 +2195,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 +2276,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 +2315,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 +2423,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 +2436,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 +2475,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { type_param_span, bound_kind, new_lt, - add_lt_sugg, + add_lt_suggs, ); } } 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/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/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 da2c6fbc05f5..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. @@ -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 a9de74d78cb6..f0e42c1fce49 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), @@ -688,6 +685,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![])] + }), } } @@ -1104,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 @@ -1338,6 +1339,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() } @@ -1354,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). /// @@ -1679,13 +1686,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, @@ -1697,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); @@ -1952,7 +1975,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/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/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_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 f71c39dc0d26..07838911c885 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` @@ -390,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_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/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index 316e2e29cd8b..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 { @@ -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_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/array_into_iter.rs b/compiler/rustc_lint/src/array_into_iter.rs index abebc533cc17..3593f141df61 100644 --- a/compiler/rustc_lint/src/array_into_iter.rs +++ b/compiler/rustc_lint/src/array_into_iter.rs @@ -1,5 +1,5 @@ +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 +118,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/builtin.rs b/compiler/rustc_lint/src/builtin.rs index d58168ff3772..6f445426df70 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -22,6 +22,23 @@ use crate::{ errors::BuiltinEllpisisInclusiveRangePatterns, + lints::{ + BuiltinAnonymousParams, BuiltinBoxPointers, BuiltinClashingExtern, + BuiltinClashingExternSub, BuiltinConstNoMangle, BuiltinDeprecatedAttrLink, + BuiltinDeprecatedAttrLinkSuggestion, BuiltinDeprecatedAttrUsed, BuiltinDerefNullptr, + BuiltinEllipsisInclusiveRangePatternsLint, BuiltinExplicitOutlives, + BuiltinExplicitOutlivesSuggestion, BuiltinIncompleteFeatures, + BuiltinIncompleteFeaturesHelp, BuiltinIncompleteFeaturesNote, BuiltinKeywordIdents, + BuiltinMissingCopyImpl, BuiltinMissingDebugImpl, BuiltinMissingDoc, + BuiltinMutablesTransmutes, BuiltinNoMangleGeneric, BuiltinNonShorthandFieldPatterns, + 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, }; @@ -33,10 +50,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, DelayDm, Diagnostic, DiagnosticBuilder, DiagnosticMessage, - 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}; @@ -110,25 +124,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 +170,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 +268,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(), }, ); } @@ -321,48 +316,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); } } @@ -371,7 +339,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); } } } @@ -379,62 +347,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); } } @@ -445,18 +389,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); } } } @@ -471,13 +407,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); } } } @@ -578,11 +514,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 +734,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 +808,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 +887,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 }, + ); } } } @@ -1005,42 +926,30 @@ 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; } } 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 +978,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 +1104,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 +1122,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 +1199,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 +1247,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); } } } @@ -1422,20 +1302,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, + }); } } } @@ -1493,18 +1363,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(()), }, ); } @@ -1569,7 +1434,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`. @@ -1583,29 +1448,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 { @@ -1639,35 +1481,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 }, + ); } } } @@ -1767,14 +1605,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 +1709,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 +1723,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 +1741,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 +1827,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 +1943,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 +2223,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 +2280,18 @@ 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( + 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, - 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, help }, + ); }); } } @@ -2525,6 +2336,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)] @@ -2533,36 +2374,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::*; @@ -2786,46 +2597,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 }, ); } } @@ -3171,31 +2952,39 @@ 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 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, ); } } @@ -3275,11 +3064,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 }, ); } } @@ -3324,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, .. }), @@ -3464,16 +3253,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 +3279,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/context.rs b/compiler/rustc_lint/src/context.rs index a16bb7f1a5f4..c9b9a6225714 100644 --- a/compiler/rustc_lint/src/context.rs +++ b/compiler/rustc_lint/src/context.rs @@ -965,6 +965,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 +1012,7 @@ impl<'tcx> LintContext for LateContext<'tcx> { &*self.lint_store } + #[rustc_lint_diagnostics] fn lookup>( &self, lint: &'static Lint, @@ -1045,6 +1047,7 @@ impl LintContext for EarlyContext<'_> { self.builder.lint_store() } + #[rustc_lint_diagnostics] fn lookup>( &self, lint: &'static Lint, 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/early.rs b/compiler/rustc_lint/src/early.rs index c18abaef8e25..f9b2df495922 100644 --- a/compiler/rustc_lint/src/early.rs +++ b/compiler/rustc_lint/src/early.rs @@ -19,6 +19,7 @@ use crate::passes::{EarlyLintPass, EarlyLintPassObject}; use rustc_ast::ptr::P; use rustc_ast::visit::{self as ast_visit, Visitor}; use rustc_ast::{self as ast, walk_list, HasAttrs}; +use rustc_data_structures::stack::ensure_sufficient_stack; use rustc_middle::ty::RegisteredTools; use rustc_session::lint::{BufferedEarlyLint, LintBuffer, LintPass}; use rustc_session::Session; @@ -39,6 +40,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; @@ -71,7 +73,7 @@ impl<'a, T: EarlyLintPass> EarlyContextAndPass<'a, T> { self.inlined_check_id(id); debug!("early context: enter_attrs({:?})", attrs); lint_callback!(self, enter_lint_attrs, attrs); - f(self); + ensure_sufficient_stack(|| f(self)); debug!("early context: exit_attrs({:?})", attrs); lint_callback!(self, exit_lint_attrs, attrs); self.context.builder.pop(push); diff --git a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs index f9d7466228ad..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,8 @@ -use crate::{context::LintContext, LateContext, LateLintPass}; -use rustc_errors::fluent; +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 +53,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 +64,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..f3ae26091863 100644 --- a/compiler/rustc_lint/src/errors.rs +++ b/compiler/rustc_lint/src/errors.rs @@ -8,12 +8,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, @@ -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::untranslatable_diagnostic)] diag.note(rationale.as_str()); } } diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs index cf8f31bcbd06..70c999811a52 100644 --- a/compiler/rustc_lint/src/expect.rs +++ b/compiler/rustc_lint/src/expect.rs @@ -1,8 +1,7 @@ -use crate::builtin; -use rustc_errors::fluent; -use rustc_hir::HirId; +use crate::lints::{Expectation, ExpectationNote}; 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 +27,17 @@ 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); + 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 { rationale, note }, + ); } } 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/for_loops_over_fallibles.rs b/compiler/rustc_lint/src/for_loops_over_fallibles.rs index 182734fa9fc8..5219992ee94f 100644 --- a/compiler/rustc_lint/src/for_loops_over_fallibles.rs +++ b/compiler/rustc_lint/src/for_loops_over_fallibles.rs @@ -1,7 +1,12 @@ -use crate::{LateContext, LateLintPass, LintContext}; +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 +58,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/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/internal.rs b/compiler/rustc_lint/src/internal.rs index 48902cd05695..5eb54cc00342 100644 --- a/compiler/rustc_lint/src/internal.rs +++ b/compiler/rustc_lint/src/internal.rs @@ -1,9 +1,12 @@ //! Some lints that are only useful in the compiler or crates that use compiler internals, such as //! Clippy. +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 +32,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 +81,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 +123,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 +181,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 +272,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 +306,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 +374,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 +390,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 +422,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/let_underscore.rs b/compiler/rustc_lint/src/let_underscore.rs index 04d844d21dc3..b83a9665fc0c 100644 --- a/compiler/rustc_lint/src/let_underscore.rs +++ b/compiler/rustc_lint/src/let_underscore.rs @@ -1,5 +1,8 @@ -use crate::{LateContext, LateLintPass, LintContext}; -use rustc_errors::{Applicability, DiagnosticBuilder, MultiSpan}; +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 +122,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 +137,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/levels.rs b/compiler/rustc_lint/src/levels.rs index e9d3d44a3f9f..cca36913dea1 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -1,9 +1,13 @@ use crate::context::{CheckLintNameResult, LintStore}; use crate::late::unerased_lint_store; +use crate::lints::{ + DeprecatedLintName, IgnoredUnlessCrateSpecified, OverruledAtributeLint, RenamedOrRemovedLint, + RenamedOrRemovedLintSuggestion, UnknownLint, UnknownLintSuggestion, +}; 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::{fluent, DecorateLint, DiagnosticBuilder, DiagnosticMessage, MultiSpan}; use rustc_hir as hir; use rustc_hir::intravisit::{self, Visitor}; use rustc_hir::HirId; @@ -15,6 +19,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, @@ -45,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. @@ -158,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. @@ -583,57 +588,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, }, ); } @@ -858,25 +838,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, }, ); @@ -917,54 +885,29 @@ 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 - }, + 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 }, ); } 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 - }, + let suggestion = suggestion + .map(|replace| UnknownLintSuggestion { suggestion: sp, replace }); + self.emit_spanned_lint( + UNKNOWN_LINTS, + sp.into(), + UnknownLint { name, suggestion }, ); } } @@ -1010,20 +953,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; @@ -1047,11 +980,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 }, @@ -1086,6 +1018,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/lib.rs b/compiler/rustc_lint/src/lib.rs index 1275d6f223c7..3d818154cb94 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..c997d8945d16 --- /dev/null +++ b/compiler/rustc_lint/src/lints.rs @@ -0,0 +1,1479 @@ +#![allow(rustc::untranslatable_diagnostic)] +#![allow(rustc::diagnostic_outside_of_impl)] +use std::num::NonZeroU32; + +use rustc_errors::{ + 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_session::parse::ParseSess; +use rustc_span::{edition::Edition, sym, symbol::Ident, Span, Symbol}; + +use crate::{ + builtin::InitError, builtin::TypeAliasBounds, errors::OverruledAttributeSub, LateContext, +}; + +// array_into_iter.rs +#[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(Subdiagnostic)] +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, + }, +} + +// 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, +} + +#[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)] +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, +} + +// Needed for def_path_str +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(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)] +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; + +// 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> { + pub what: &'a str, + #[suggestion(code = "pub(crate)")] + pub suggestion: (Span, Applicability), + #[help] + pub help: Option<()>, +} + +pub struct SuggestChangingAssocTypes<'a, 'b> { + pub ty: &'a rustc_hir::Ty<'b>, +} + +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)] +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, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_incomplete_features)] +pub struct BuiltinIncompleteFeatures { + pub name: Symbol, + #[subdiagnostic] + pub note: Option, + #[subdiagnostic] + pub help: Option, +} + +#[derive(Subdiagnostic)] +#[help(help)] +pub struct BuiltinIncompleteFeaturesHelp; + +#[derive(Subdiagnostic)] +#[note(note)] +pub struct BuiltinIncompleteFeaturesNote { + pub n: NonZeroU32, +} + +pub struct BuiltinUnpermittedTypeInit<'a> { + pub msg: DiagnosticMessage, + pub ty: Ty<'a>, + pub label: Span, + pub sub: BuiltinUnpermittedTypeInitSub, +} + +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)] +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, +} + +// 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)] +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>, +} + +// expect.rs +#[derive(LintDiagnostic)] +#[diag(lint_expectation)] +pub struct Expectation { + #[subdiagnostic] + pub rationale: Option, + #[note] + pub note: Option<()>, +} + +#[derive(Subdiagnostic)] +#[note(rationale)] +pub struct ExpectationNote { + pub rationale: Symbol, +} + +// 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, +} + +// 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)] +#[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 { + #[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)] +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")] + pub suggestion: Span, + 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 replace: &'a str, +} + +#[derive(LintDiagnostic)] +#[diag(lint_unknown_lint)] +pub struct UnknownLint { + pub name: String, + #[subdiagnostic] + pub suggestion: Option, +} + +#[derive(Subdiagnostic)] +#[suggestion(suggestion, code = "{replace}", applicability = "maybe-incorrect")] +pub struct UnknownLintSuggestion { + #[primary_span] + pub suggestion: Span, + pub replace: Symbol, +} + +#[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)] +#[note] +#[help] +pub struct CStringPtr { + #[label(as_ptr_label)] + pub as_ptr: Span, + #[label(unwrap_label)] + pub unwrap: Span, +} + +// non_ascii_idents.rs +#[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, +} + +// non_fmt_panic.rs +pub struct NonFmtPanicUnused { + pub count: usize, + pub suggestion: Option, +} + +// Used because of two suggestions based on one Option +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 { + 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 + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_non_fmt_panic_unused + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_non_fmt_panic_braces)] +#[note] +pub struct NonFmtPanicBraces { + pub count: usize, + #[suggestion(code = "\"{{}}\", ", applicability = "machine-applicable")] + pub suggestion: Option, +} + +// nonstandard_style.rs +#[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(Subdiagnostic)] +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 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); + } + 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(Subdiagnostic)] +pub enum NonUpperCaseGlobalSub { + #[label(label)] + Label { + #[primary_span] + span: Span, + }, + #[suggestion(suggestion, code = "{replace}", applicability = "maybe-incorrect")] + Suggestion { + #[primary_span] + span: Span, + replace: String, + }, +} + +// noop_method_call.rs +#[derive(LintDiagnostic)] +#[diag(lint_noop_method_call)] +#[note] +pub struct NoopMethodCallDiag<'a> { + pub method: Symbol, + pub receiver_ty: Ty<'a>, + #[label] + pub label: Span, +} + +// pass_by_value.rs +#[derive(LintDiagnostic)] +#[diag(lint_pass_by_value)] +pub struct PassByValueDiag { + pub ty: String, + #[suggestion(code = "{ty}", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + +// redundant_semicolon.rs +#[derive(LintDiagnostic)] +#[diag(lint_redundant_semicolons)] +pub struct RedundantSemicolonsDiag { + pub multiple: bool, + #[suggestion(code = "", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + +// traits.rs +pub struct DropTraitConstraintsDiag<'a> { + pub predicate: Predicate<'a>, + pub tcx: TyCtxt<'a>, + pub def_id: DefId, +} + +// Needed for def_path_str +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)) + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_drop_trait_constraints + } +} + +pub struct DropGlue<'a> { + pub tcx: TyCtxt<'a>, + pub def_id: DefId, +} + +// Needed for def_path_str +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 + } +} + +// types.rs +#[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 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); + } + OverflowingBinHexSign::Negative => { + diag.note(fluent::negative_note); + diag.note(fluent::negative_becomes_note); + } + } + } +} + +#[derive(Subdiagnostic)] +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 }, +} + +#[derive(LintDiagnostic)] +#[diag(lint_overflowing_int)] +#[note] +pub struct OverflowingInt<'a> { + pub ty: &'a str, + pub lit: String, + pub min: i128, + pub max: u128, + #[subdiagnostic] + pub help: Option>, +} + +#[derive(Subdiagnostic)] +#[help(help)] +pub struct OverflowingIntHelp<'a> { + pub suggestion_ty: &'a str, +} + +#[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; + +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, +} + +// Used because of the complexity of Option, DiagnosticMessage, and 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 { + 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)] +#[help] +pub struct InvalidAtomicOrderingDiag { + pub method: Symbol, + #[label] + pub fail_order_arg_span: Span, +} + +// unused.rs +#[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, +} + +// Needed because of def_path_str +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)); + // check for #[must_use = "..."] + if let Some(note) = self.note { + diag.note(note.as_str()); + } + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_unused_def + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_path_statement_drop)] +pub struct PathStatementDrop { + #[subdiagnostic] + pub sub: PathStatementDropSub, +} + +#[derive(Subdiagnostic)] +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/methods.rs b/compiler/rustc_lint/src/methods.rs index e2d7d5b49f69..3045fc1a4761 100644 --- a/compiler/rustc_lint/src/methods.rs +++ b/compiler/rustc_lint/src/methods.rs @@ -1,7 +1,7 @@ +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 +90,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 }, ); } } diff --git a/compiler/rustc_lint/src/non_ascii_idents.rs b/compiler/rustc_lint/src/non_ascii_idents.rs index dea9506acb20..f130a98185d6 100644 --- a/compiler/rustc_lint/src/non_ascii_idents.rs +++ b/compiler/rustc_lint/src/non_ascii_idents.rs @@ -1,7 +1,10 @@ +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 +183,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 +215,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 +323,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 }, ); } } diff --git a/compiler/rustc_lint/src/non_fmt_panic.rs b/compiler/rustc_lint/src/non_fmt_panic.rs index 8dccfe0046c4..4a02c6cce47e 100644 --- a/compiler/rustc_lint/src/non_fmt_panic.rs +++ b/compiler/rustc_lint/src/non_fmt_panic.rs @@ -1,3 +1,4 @@ +use crate::lints::{NonFmtPanicBraces, NonFmtPanicUnused}; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_errors::{fluent, Applicability}; @@ -118,6 +119,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 +255,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 +272,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()), }, ); } diff --git a/compiler/rustc_lint/src/nonstandard_style.rs b/compiler/rustc_lint/src/nonstandard_style.rs index f37d6e9a63d4..74d234fabea0 100644 --- a/compiler/rustc_lint/src/nonstandard_style.rs +++ b/compiler/rustc_lint/src/nonstandard_style.rs @@ -1,7 +1,10 @@ +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 +139,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 +284,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 +470,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 }, + ); } } } diff --git a/compiler/rustc_lint/src/noop_method_call.rs b/compiler/rustc_lint/src/noop_method_call.rs index 2ef425a10931..d67a00619dd0 100644 --- a/compiler/rustc_lint/src/noop_method_call.rs +++ b/compiler/rustc_lint/src/noop_method_call.rs @@ -1,7 +1,7 @@ use crate::context::LintContext; +use crate::lints::NoopMethodCallDiag; 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 +85,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 }, + ); } } diff --git a/compiler/rustc_lint/src/pass_by_value.rs b/compiler/rustc_lint/src/pass_by_value.rs index 22caadfab177..57482a9edba8 100644 --- a/compiler/rustc_lint/src/pass_by_value.rs +++ b/compiler/rustc_lint/src/pass_by_value.rs @@ -1,5 +1,5 @@ +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 +29,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 }, + ); } } _ => {} diff --git a/compiler/rustc_lint/src/redundant_semicolon.rs b/compiler/rustc_lint/src/redundant_semicolon.rs index 3521de7fc084..9a8b14b4907e 100644 --- a/compiler/rustc_lint/src/redundant_semicolon.rs +++ b/compiler/rustc_lint/src/redundant_semicolon.rs @@ -1,6 +1,5 @@ -use crate::{EarlyContext, EarlyLintPass, LintContext}; +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 +47,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 }, ); } } diff --git a/compiler/rustc_lint/src/traits.rs b/compiler/rustc_lint/src/traits.rs index 1b21c2dac378..7ea1a138b7e6 100644 --- a/compiler/rustc_lint/src/traits.rs +++ b/compiler/rustc_lint/src/traits.rs @@ -1,7 +1,7 @@ +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 +101,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 +119,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 }); } } } diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index fa415243ba06..f2ab44ac97c8 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1,11 +1,16 @@ +use crate::lints::{ + AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, ImproperCTypes, + InvalidAtomicOrderingDiag, OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, + OverflowingBinHexSub, OverflowingInt, OverflowingIntHelp, 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_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}; @@ -146,32 +151,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 +223,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 +337,19 @@ 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); + 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 }); - 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, min, max, help }, + ); } } @@ -408,18 +373,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 +400,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 +442,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 +471,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), @@ -878,39 +827,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 @@ -1174,26 +1123,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 }; - 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 { @@ -1397,11 +1341,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 +1452,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 +1475,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); } } @@ -1550,15 +1492,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, diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs index 525079681ca5..ac2b32b44e6a 100644 --- a/compiler/rustc_lint/src/unused.rs +++ b/compiler/rustc_lint/src/unused.rs @@ -1,9 +1,14 @@ +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 +168,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 +404,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 +464,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 +665,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 +1266,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 +1319,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); + } + }; } } } 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_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/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_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)); } 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/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 0d9f216700fb..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. @@ -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); } } @@ -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_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/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 883554f959cc..9e63c2bd2216 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 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()) => { @@ -580,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/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/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!( 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/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/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_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/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/_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/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/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/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 35d369ffc891..6ac00d16c53d 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), @@ -755,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, ...) } @@ -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/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 f01d74539a12..1df19a2abf33 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; @@ -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 @@ -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_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/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index c49e75d68ad3..42fc78a4715f 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)) } @@ -2126,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) => { @@ -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_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_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, _) 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 136a4906c58d..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` @@ -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> { @@ -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_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/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 68179001b916..06523b0a1de8 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -1,9 +1,13 @@ +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}; use rustc_span::{symbol::Ident, Span}; @@ -493,6 +497,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 { @@ -614,3 +628,223 @@ 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>, +} + +#[derive(LintDiagnostic)] +#[diag(mir_build_overlapping_range_endpoints)] +#[note] +pub struct OverlappingRangeEndpoints<'tcx> { + #[label(range)] + pub range: Span, + #[subdiagnostic] + pub overlap: Vec>, +} + +pub struct Overlap<'tcx> { + 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] +#[note] +pub(crate) struct NonExhaustiveOmittedPattern<'tcx> { + pub scrut_ty: Ty<'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 let_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 SuggestLet { + #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] + If { + #[suggestion_part(code = "if ")] + start_span: Span, + #[suggestion_part(code = " {{ todo!() }}")] + semi_span: Span, + count: usize, + }, + #[suggestion( + mir_build_suggest_let_else, + code = " else {{ todo!() }}", + applicability = "has-placeholders" + )] + Else { + #[primary_span] + end_span: Span, + 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/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_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs index e7ee0d9e908e..e13c0662ef85 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs @@ -9,8 +9,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 +377,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 +389,73 @@ 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,let_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, + ) + } 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 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) + }; + + 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, + let_suggestion, + res_defined_here, + adt_defined_here, + }); } } 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..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 @@ -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 } @@ -508,12 +436,10 @@ 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); - } + + 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} ); } 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..17b3c475f83c 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,21 @@ impl IntRange { return; } - let overlaps: Vec<_> = 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)| (self.intersection(&range).unwrap(), span)) + .map(|(range, span)| Overlap { + range: self.intersection(&range).unwrap().to_pat(pcx.cx.tcx, pcx.ty), + span, + }) .collect(); - if !overlaps.is_empty() { - pcx.cx.tcx.struct_span_lint_hir( + if !overlap.is_empty() { + 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/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index 2c775b397182..3a6ef87c9c66 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; @@ -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/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs index 8f80cb95e58e..be66d0d47651 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, Uncovered}; use rustc_data_structures::captures::Captures; @@ -743,31 +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>, -) { - 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: @@ -913,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/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/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/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_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_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..c8fc69eb856a 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 }) @@ -342,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), - } - } -} diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs index 574591529f33..06b970ad9797 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 { @@ -1237,3 +1255,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/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..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() @@ -2039,7 +2042,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)) } @@ -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/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..53680a82bdc2 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| { @@ -2214,7 +2222,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/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 49d319815395..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], @@ -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/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/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_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_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/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index cf6359962686..b1b04c92a750 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -334,6 +334,15 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { 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); + } + fn insert_field_names_extern(&mut self, def_id: DefId) { let field_names = self.r.cstore().struct_field_names_untracked(def_id, self.r.session).collect(); @@ -514,7 +523,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. @@ -737,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. @@ -770,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 @@ -783,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(..) => { @@ -1510,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 37771693417b..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}; @@ -161,6 +163,7 @@ impl<'a> Resolver<'a> { found_use, DiagnosticMode::Normal, path, + "", ); err.emit(); } else if let Some((span, msg, sugg, appl)) = suggestion { @@ -690,6 +693,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Pattern, vec![], + "", ); } err @@ -1344,6 +1348,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Normal, vec![], + "", ); if macro_kind == MacroKind::Derive && (ident.name == sym::Send || ident.name == sym::Sync) { @@ -1601,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. @@ -2309,7 +2324,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 +2339,8 @@ pub(crate) fn import_candidates( // This is `None` if all placement locations are inside expansions use_placement_span: Option, candidates: &[ImportSuggestion], + mode: DiagnosticMode, + append: &str, ) { show_candidates( session, @@ -2333,8 +2350,9 @@ pub(crate) fn import_candidates( candidates, Instead::Yes, FoundUse::Yes, - DiagnosticMode::Import, + mode, vec![], + append, ); } @@ -2352,6 +2370,7 @@ fn show_candidates( found_use: FoundUse, mode: DiagnosticMode, path: Vec, + append: &str, ) { if candidates.is_empty() { return; @@ -2416,7 +2435,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 4d896b055268..00f65ac37b6a 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> { @@ -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 { @@ -494,10 +489,12 @@ 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 `::` 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); } @@ -538,14 +545,36 @@ impl<'a, 'b> ImportResolver<'a, 'b> { diag.multipart_suggestion(&msg, suggestions, applicability); } - if let Some(candidate) = &err.candidate { - import_candidates( - self.r.session, - &self.r.untracked.source_span, - &mut diag, - Some(err.span), - &candidate, - ) + if let Some(candidates) = &err.candidates { + match &import.kind { + 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() + .unwrap_or(""), + ), + ImportKind::Single { nested: true, source, target, .. } => { + import_candidates( + self.r.session, + &self.r.untracked.source_span, + &mut diag, + None, + &candidates, + DiagnosticMode::Normal, + (source != target) + .then(|| format!(" as {target}")) + .as_deref() + .unwrap_or(""), + ); + } + _ => {} + } } } @@ -707,14 +736,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); @@ -761,7 +790,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { )), note: None, suggestion: None, - candidate: None, + candidates: None, }); } } @@ -873,7 +902,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() { @@ -943,7 +972,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/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_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index 74522f185422..d92f5a7c05e6 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -1451,6 +1451,17 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { .collect(); if non_visible_spans.len() > 0 { + if let Some(fields) = self.r.field_visibility_spans.get(&def_id) { + 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, + ); + } + 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/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/options.rs b/compiler/rustc_session/src/options.rs index 043a60a1c531..b062b43873b2 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], @@ -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"), @@ -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)"), @@ -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], 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_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs index 5d5f8d6d6540..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, @@ -613,6 +614,7 @@ symbols! { dispatch_from_dyn, div, div_assign, + do_not_recommend, doc, doc_alias, doc_auto_cfg, 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/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/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() }, } 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/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() } 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 0fafa52a45b6..a094c2c54526 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(#106649): Remove aarch64-fuchsia in favor of aarch64-unknown-fuchsia + ("aarch64-fuchsia", aarch64_fuchsia), ("aarch64-unknown-fuchsia", aarch64_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), ("avr-unknown-gnu-atmega328", avr_unknown_gnu_atmega328), @@ -2618,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_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/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/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/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/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), } } 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); 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/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index f8efe9bfa9f8..71fb6058cd2c 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -168,24 +168,27 @@ 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 { 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() { + self.single_match = match self.single_match { + None => Some(Ok(c)), + Some(Ok(o)) if o == c => Some(Ok(c)), + Some(_) => Some(Err(())), + }; + } + + 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. @@ -200,22 +203,29 @@ 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); + let mut v = Visitor { ct, infcx, param_env, single_match }; + let _ = b_ct.visit_with(&mut v); - if let ControlFlow::Break(()) = result { - debug!("is_const_evaluatable: yes"); - return true; - } + single_match = v.single_match; } _ => {} // don't care } } + if let Some(Ok(c)) = single_match { + 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; + } + debug!("is_const_evaluatable: no"); false } diff --git a/compiler/rustc_trait_selection/src/traits/engine.rs b/compiler/rustc_trait_selection/src/traits/engine.rs index bc6d9d4b922d..369f80139a80 100644 --- a/compiler/rustc_trait_selection/src/traits/engine.rs +++ b/compiler/rustc_trait_selection/src/traits/engine.rs @@ -9,7 +9,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; @@ -215,7 +215,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/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/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs index 9c098e1a2fc1..5ee2514652cb 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 ) } @@ -1720,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() { @@ -1751,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, @@ -2164,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/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 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 c52365ae3b7c..cabf51e01da3 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}; @@ -36,7 +35,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; @@ -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. @@ -1358,57 +1361,117 @@ 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; + 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(); + } + 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 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; + 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 } + }; - // Skipping binder here, remapping below - let mut suggested_ty = trait_pred.self_ty().skip_binder(); + // 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![]; + // 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())); - for refs_remaining in 0..refs_number { let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else { break; }; suggested_ty = *inner_ty; - // Remapping bound vars here - let trait_pred_and_suggested_ty = - trait_pred.map_bound(|trait_pred| (trait_pred, suggested_ty)); + hir_ty = mut_ty.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 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 { - "consider removing the leading `&`-reference".to_string() - } else { - format!("consider removing {} leading `&`-references", remove_refs) - }; - - err.span_suggestion_short(sp, &msg, "", Applicability::MachineApplicable); - suggested = true; - break; + if maybe_suggest(suggested_ty, count, suggestions.clone()) { + return true; } } } - suggested + + // 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; + 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())); + + let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else { + break 'outer; + }; + suggested_ty = *inner_ty; + + expr = borrowed; + + if maybe_suggest(suggested_ty, count, suggestions.clone()) { + return true; + } + } + 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 Some(hir::Node::Local(local)) = self.tcx.hir().find_parent(binding.hir_id) + && let None = local.ty + && let Some(binding_expr) = local.init + { + expr = binding_expr; + } else { + break 'outer; + } + } + false } fn suggest_remove_await(&self, obligation: &PredicateObligation<'tcx>, err: &mut Diagnostic) { @@ -1519,6 +1582,13 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { .source_map() .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 snippet + .trim_start_matches(|c: char| c.is_whitespace() || c == '&') + .starts_with("mut") + { + return; + } err.span_suggestion_verbose( sp, "consider changing this borrow's mutability", @@ -2189,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 @@ -2205,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 { @@ -2615,11 +2685,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))); @@ -2942,7 +3026,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, .. }), @@ -2953,9 +3037,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/compiler/rustc_trait_selection/src/traits/mod.rs b/compiler/rustc_trait_selection/src/traits/mod.rs index c30531fa9066..37b40a2f75ad 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, @@ -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_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 f7614997585c..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 @@ -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 } = @@ -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/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) } } 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..98bf1cd7a7cc 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 = @@ -254,18 +255,19 @@ 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 }); } } } @@ -396,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 15526b34ed2d..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 @@ -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) } @@ -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 3f14491f8032..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`". @@ -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 { .. } @@ -2321,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 @@ -2377,6 +2380,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); @@ -2638,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` @@ -2664,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 @@ -2775,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 0e0a883d9f59..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>( @@ -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_traits/src/codegen.rs b/compiler/rustc_traits/src/codegen.rs index f8f74b732efd..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. @@ -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)) } diff --git a/compiler/rustc_traits/src/type_op.rs b/compiler/rustc_traits/src/type_op.rs index 7f964afde80f..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); @@ -91,13 +124,13 @@ 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); 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)); } @@ -112,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/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs index f8a5691f29de..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. @@ -254,12 +254,12 @@ 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 // 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 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. 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 { 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/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index fc4d4bff24f3..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" )] @@ -1514,6 +1519,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: /// /// ``` diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs index 9e0d7cab63e5..8790649abe6f 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)] @@ -239,7 +240,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)] @@ -248,6 +248,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)] diff --git a/library/core/src/num/int_macros.rs b/library/core/src/num/int_macros.rs index 57096f439743..21518a3f5518 100644 --- a/library/core/src/num/int_macros.rs +++ b/library/core/src/num/int_macros.rs @@ -1514,37 +1514,50 @@ macro_rules! int_impl { (a as Self, b) } - /// Calculates `self + rhs + carry` without the ability to overflow. + /// Calculates `self` + `rhs` + `carry` and checks for overflow. /// - /// Performs "signed ternary addition" which takes in an extra bit to add, and may return an - /// additional bit of overflow. This signed function is used only on the highest-ordered data, - /// for which the signed overflow result indicates whether the big integer overflowed or not. + /// Performs "ternary addition" of two integer operands and a carry-in + /// bit, and returns a tuple of the sum along with a boolean indicating + /// whether an arithmetic overflow would occur. On overflow, the wrapped + /// value is returned. + /// + /// This allows chaining together multiple additions to create a wider + /// addition, and can be useful for bignum addition. This method should + /// only be used for the most significant word; for the less significant + /// words the unsigned method + #[doc = concat!("[`", stringify!($UnsignedT), "::carrying_add`]")] + /// should be used. + /// + /// The output boolean returned by this method is *not* a carry flag, + /// and should *not* be added to a more significant word. + /// + /// If the input carry is false, this method is equivalent to + /// [`overflowing_add`](Self::overflowing_add). /// /// # Examples /// - /// Basic usage: - /// /// ``` /// #![feature(bigint_helper_methods)] - #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".carrying_add(2, false), (7, false));")] - #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".carrying_add(2, true), (8, false));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.carrying_add(1, false), (", stringify!($SelfT), "::MIN, true));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.carrying_add(0, true), (", stringify!($SelfT), "::MIN, true));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.carrying_add(1, true), (", stringify!($SelfT), "::MIN + 1, true));")] - #[doc = concat!("assert_eq!(", - stringify!($SelfT), "::MAX.carrying_add(", stringify!($SelfT), "::MAX, true), ", - "(-1, true));" - )] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.carrying_add(-1, true), (", stringify!($SelfT), "::MIN, false));")] - #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".carrying_add(", stringify!($SelfT), "::MAX, true), (", stringify!($SelfT), "::MIN, true));")] - /// ``` + /// // Only the most significant word is signed. + /// // + #[doc = concat!("// 10 MAX (a = 10 × 2^", stringify!($BITS), " + 2^", stringify!($BITS), " - 1)")] + #[doc = concat!("// + -5 9 (b = -5 × 2^", stringify!($BITS), " + 9)")] + /// // --------- + #[doc = concat!("// 6 8 (sum = 6 × 2^", stringify!($BITS), " + 8)")] /// - /// If `carry` is false, this method is equivalent to [`overflowing_add`](Self::overflowing_add): + #[doc = concat!("let (a1, a0): (", stringify!($SelfT), ", ", stringify!($UnsignedT), ") = (10, ", stringify!($UnsignedT), "::MAX);")] + #[doc = concat!("let (b1, b0): (", stringify!($SelfT), ", ", stringify!($UnsignedT), ") = (-5, 9);")] + /// let carry0 = false; /// - /// ``` - /// #![feature(bigint_helper_methods)] - #[doc = concat!("assert_eq!(5_", stringify!($SelfT), ".carrying_add(2, false), 5_", stringify!($SelfT), ".overflowing_add(2));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.carrying_add(1, false), ", stringify!($SelfT), "::MAX.overflowing_add(1));")] + #[doc = concat!("// ", stringify!($UnsignedT), "::carrying_add for the less significant words")] + /// let (sum0, carry1) = a0.carrying_add(b0, carry0); + /// assert_eq!(carry1, true); + /// + #[doc = concat!("// ", stringify!($SelfT), "::carrying_add for the most significant word")] + /// let (sum1, overflow) = a1.carrying_add(b1, carry1); + /// assert_eq!(overflow, false); + /// + /// assert_eq!((sum1, sum0), (6, 8)); /// ``` #[unstable(feature = "bigint_helper_methods", issue = "85532")] #[rustc_const_unstable(feature = "const_bigint_helper_methods", issue = "85532")] @@ -1608,25 +1621,51 @@ macro_rules! int_impl { (a as Self, b) } - /// Calculates `self - rhs - borrow` without the ability to overflow. + /// Calculates `self` − `rhs` − `borrow` and checks for + /// overflow. /// - /// Performs "signed ternary subtraction" which takes in an extra bit to subtract, and may return an - /// additional bit of overflow. This signed function is used only on the highest-ordered data, - /// for which the signed overflow result indicates whether the big integer overflowed or not. + /// Performs "ternary subtraction" by subtracting both an integer + /// operandand a borrow-in bit from `self`, and returns a tuple of the + /// difference along with a boolean indicating whether an arithmetic + /// overflow would occur. On overflow, the wrapped value is returned. + /// + /// This allows chaining together multiple subtractions to create a + /// wider subtraction, and can be useful for bignum subtraction. This + /// method should only be used for the most significant word; for the + /// less significant words the unsigned method + #[doc = concat!("[`", stringify!($UnsignedT), "::borrowing_sub`]")] + /// should be used. + /// + /// The output boolean returned by this method is *not* a borrow flag, + /// and should *not* be subtracted from a more significant word. + /// + /// If the input borrow is false, this method is equivalent to + /// [`overflowing_sub`](Self::overflowing_sub). /// /// # Examples /// - /// Basic usage: - /// /// ``` /// #![feature(bigint_helper_methods)] - #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".borrowing_sub(2, false), (3, false));")] - #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".borrowing_sub(2, true), (2, false));")] - #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".borrowing_sub(1, false), (-1, false));")] - #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".borrowing_sub(1, true), (-2, false));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.borrowing_sub(1, true), (", stringify!($SelfT), "::MAX - 1, true));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.borrowing_sub(-1, false), (", stringify!($SelfT), "::MIN, true));")] - #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MAX.borrowing_sub(-1, true), (", stringify!($SelfT), "::MAX, false));")] + /// // Only the most significant word is signed. + /// // + #[doc = concat!("// 6 8 (a = 6 × 2^", stringify!($BITS), " + 8)")] + #[doc = concat!("// - -5 9 (b = -5 × 2^", stringify!($BITS), " + 9)")] + /// // --------- + #[doc = concat!("// 10 MAX (diff = 10 × 2^", stringify!($BITS), " + 2^", stringify!($BITS), " - 1)")] + /// + #[doc = concat!("let (a1, a0): (", stringify!($SelfT), ", ", stringify!($UnsignedT), ") = (6, 8);")] + #[doc = concat!("let (b1, b0): (", stringify!($SelfT), ", ", stringify!($UnsignedT), ") = (-5, 9);")] + /// let borrow0 = false; + /// + #[doc = concat!("// ", stringify!($UnsignedT), "::borrowing_sub for the less significant words")] + /// let (diff0, borrow1) = a0.borrowing_sub(b0, borrow0); + /// assert_eq!(borrow1, true); + /// + #[doc = concat!("// ", stringify!($SelfT), "::borrowing_sub for the most significant word")] + /// let (diff1, overflow) = a1.borrowing_sub(b1, borrow1); + /// assert_eq!(overflow, false); + /// + #[doc = concat!("assert_eq!((diff1, diff0), (10, ", stringify!($UnsignedT), "::MAX));")] /// ``` #[unstable(feature = "bigint_helper_methods", issue = "85532")] #[rustc_const_unstable(feature = "const_bigint_helper_methods", issue = "85532")] 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/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))); diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index f357d505fe89..5c5ef0b1125a 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -249,8 +249,9 @@ 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(); - file.read_to_end(&mut bytes)?; + let size = file.metadata().map(|m| m.len()).unwrap_or(0); + let mut bytes = Vec::with_capacity(size as usize); + io::default_read_to_end(&mut file, &mut bytes)?; Ok(bytes) } inner(path.as_ref()) @@ -288,8 +289,9 @@ 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(); - file.read_to_string(&mut string)?; + let size = file.metadata().map(|m| m.len()).unwrap_or(0); + let mut string = String::with_capacity(size as usize); + io::default_read_to_string(&mut file, &mut string)?; Ok(string) } inner(path.as_ref()) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index a783e187004f..87585a8fcd0d 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,7 @@ 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)); + return Ok(interpret_cs_action(action_table as *mut u8, cs_action_entry, lpad)); } } } @@ -113,26 +113,39 @@ 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)); + 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 { - // If cs_action is 0 then this is a cleanup (Drop::drop). We run these +unsafe fn interpret_cs_action( + action_table: *mut u8, + cs_action_entry: u64, + lpad: usize, +) -> EHAction { + if cs_action_entry == 0 { + // 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 { - // Stop unwinding Rust panics at catch_unwind. - EHAction::Catch(lpad) + // 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(); + if ttype_index == 0 { + EHAction::Cleanup(lpad) + } else { + // Stop unwinding Rust panics at catch_unwind. + EHAction::Catch(lpad) + } } } 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/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/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()))); } } } 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")))] 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/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/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/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..68d1db0160a2 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; } @@ -1191,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(), ); } @@ -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/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/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" => {} 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..62e3f627ec08 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 \ @@ -59,16 +55,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/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} 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.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 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/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/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/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..87de41fde63c 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, } } } @@ -680,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()) @@ -688,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, } } @@ -707,15 +711,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/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/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/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 77401e8b76e8..b2fa6e82acce 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 { @@ -337,6 +338,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; @@ -662,10 +667,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; @@ -706,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/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!(), } } 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/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() { 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) => { diff --git a/src/test/run-make-fulldeps/alloc-no-oom-handling/Makefile b/src/test/run-make-fulldeps/alloc-no-oom-handling/Makefile deleted file mode 100644 index 735d91bd27c5..000000000000 --- a/src/test/run-make-fulldeps/alloc-no-oom-handling/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -include ../tools.mk - -all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_global_oom_handling diff --git a/src/test/run-make-fulldeps/alloc-no-rc/Makefile b/src/test/run-make-fulldeps/alloc-no-rc/Makefile deleted file mode 100644 index 5f7ae70fa026..000000000000 --- a/src/test/run-make-fulldeps/alloc-no-rc/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -include ../tools.mk - -all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_rc diff --git a/src/test/run-make-fulldeps/alloc-no-sync/Makefile b/src/test/run-make-fulldeps/alloc-no-sync/Makefile deleted file mode 100644 index 6a258a2ddfd6..000000000000 --- a/src/test/run-make-fulldeps/alloc-no-sync/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -include ../tools.mk - -all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_sync diff --git a/src/test/run-make-fulldeps/core-no-fp-fmt-parse/Makefile b/src/test/run-make-fulldeps/core-no-fp-fmt-parse/Makefile deleted file mode 100644 index ec05ebea5558..000000000000 --- a/src/test/run-make-fulldeps/core-no-fp-fmt-parse/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -include ../tools.mk - -all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/core/src/lib.rs --cfg no_fp_fmt_parse diff --git a/src/test/run-make/coverage/compiletest-ignore-dir b/src/test/run-make/coverage/compiletest-ignore-dir deleted file mode 100644 index b533b272d38c..000000000000 --- a/src/test/run-make/coverage/compiletest-ignore-dir +++ /dev/null @@ -1,3 +0,0 @@ -# Directory "coverage" supports the tests at prefix ../coverage-* - -# Use ./x.py [options] test src/test/run-make/coverage to run all related tests. diff --git a/src/test/ui/chalkify/bugs/async.rs b/src/test/ui/chalkify/bugs/async.rs deleted file mode 100644 index ed0f5dc9bd37..000000000000 --- a/src/test/ui/chalkify/bugs/async.rs +++ /dev/null @@ -1,9 +0,0 @@ -// check-fail -// known-bug: unknown -// compile-flags: -Z trait-solver=chalk --edition=2021 - -fn main() -> () {} - -async fn foo(x: u32) -> u32 { - x -} diff --git a/src/test/ui/chalkify/bugs/async.stderr b/src/test/ui/chalkify/bugs/async.stderr deleted file mode 100644 index eda867f4159f..000000000000 --- a/src/test/ui/chalkify/bugs/async.stderr +++ /dev/null @@ -1,48 +0,0 @@ -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]: 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 - | -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 - | -LL | async fn foo(x: u32) -> u32 { - | ^^^ - -error: aborting due to 4 previous errors - -For more information about this error, try `rustc --explain E0277`. 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/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-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-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-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-pattern-irrefutable.rs b/src/test/ui/consts/const-pattern-irrefutable.rs deleted file mode 100644 index 2105c12a1680..000000000000 --- a/src/test/ui/consts/const-pattern-irrefutable.rs +++ /dev/null @@ -1,16 +0,0 @@ -mod foo { - pub const b: u8 = 2; - pub const d: u8 = 2; -} - -use foo::b as c; -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 - fn f() {} // Check that the `NOTE`s still work with an item here (cf. issue #35115). -} 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 deleted file mode 100644 index 2536d2f08f28..000000000000 --- a/src/test/ui/consts/issue-83182.rs +++ /dev/null @@ -1,7 +0,0 @@ -// stderr-per-bitwidth - -use std::mem; -struct MyStr(str); -const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; -//~^ ERROR: it is undefined behavior to use this value -fn main() {} 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/feature-gates/feature-gate-abi-efiapi.rs b/src/test/ui/feature-gates/feature-gate-abi-efiapi.rs deleted file mode 100644 index 0c0d736acd04..000000000000 --- a/src/test/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/src/test/ui/feature-gates/feature-gate-abi-efiapi.stderr b/src/test/ui/feature-gates/feature-gate-abi-efiapi.stderr deleted file mode 100644 index 5b01dcc6d859..000000000000 --- a/src/test/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`. diff --git a/src/test/ui/generic-associated-types/issue-91139.stderr b/src/test/ui/generic-associated-types/issue-91139.stderr deleted file mode 100644 index 5485570cecd7..000000000000 --- a/src/test/ui/generic-associated-types/issue-91139.stderr +++ /dev/null @@ -1,73 +0,0 @@ -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: `T` does not live long enough - --> $DIR/issue-91139.rs:14:12 - | -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: `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/nll/closure-malformed-projection-input-issue-102800.rs b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs deleted file mode 100644 index 25f47f5b6f6c..000000000000 --- a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Regression test for #102800 -// -// Here we are generating higher-ranked region constraints when normalizing and relating closure -// input types. Previously this was an ICE in the error path because we didn't register enough -// diagnostic information to render the higher-ranked subtyping error. - -// check-fail - -trait Trait { - type Ty; -} - -impl Trait for &'static () { - type Ty = (); -} - -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 -} 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 deleted file mode 100644 index dbd5dabd1dac..000000000000 --- a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr +++ /dev/null @@ -1,104 +0,0 @@ -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 - | -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: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 - diff --git a/src/test/ui/nll/user-annotations/normalization.rs b/src/test/ui/nll/user-annotations/normalization.rs deleted file mode 100644 index 870e3d8110cd..000000000000 --- a/src/test/ui/nll/user-annotations/normalization.rs +++ /dev/null @@ -1,10 +0,0 @@ -// Test that we enforce a `&'static` requirement that is only visible -// after normalization. - -trait Foo { type Out; } -impl Foo for () { type Out = &'static u32; } - -fn main() { - let a = 22; - let b: <() as Foo>::Out = &a; //~ ERROR -} diff --git a/src/test/ui/nll/user-annotations/normalization.stderr b/src/test/ui/nll/user-annotations/normalization.stderr deleted file mode 100644 index 4c7893789a53..000000000000 --- a/src/test/ui/nll/user-annotations/normalization.stderr +++ /dev/null @@ -1,13 +0,0 @@ -error[E0597]: `a` does not live long enough - --> $DIR/normalization.rs:9:31 - | -LL | let b: <() 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 - -For more information about this error, try `rustc --explain E0597`. diff --git a/src/test/ui/not-panic/not-panic-safe.rs b/src/test/ui/not-panic/not-panic-safe.rs deleted file mode 100644 index 4165c5dc13aa..000000000000 --- a/src/test/ui/not-panic/not-panic-safe.rs +++ /dev/null @@ -1,10 +0,0 @@ -#![allow(dead_code)] - -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 -} diff --git a/src/test/ui/not-panic/not-panic-safe.stderr b/src/test/ui/not-panic/not-panic-safe.stderr deleted file mode 100644 index 2cd51a439988..000000000000 --- a/src/test/ui/not-panic/not-panic-safe.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error[E0277]: the type `&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 - | help: consider removing the leading `&`-reference - | - = help: the trait `UnwindSafe` is not implemented for `&mut i32` - = note: `UnwindSafe` is implemented for `&i32`, but not for `&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` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/parser/issues/issue-17904.stderr b/src/test/ui/parser/issues/issue-17904.stderr deleted file mode 100644 index a3cac676189c..000000000000 --- a/src/test/ui/parser/issues/issue-17904.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: expected one of `:`, `==`, or `=`, found `;` - --> $DIR/issue-17904.rs:4:33 - | -LL | struct Foo where T: Copy, (T); - | ^ expected one of `:`, `==`, or `=` - -error: aborting due to previous error - diff --git a/src/test/ui/pattern/usefulness/issue-31561.rs b/src/test/ui/pattern/usefulness/issue-31561.rs deleted file mode 100644 index 5b878851a314..000000000000 --- a/src/test/ui/pattern/usefulness/issue-31561.rs +++ /dev/null @@ -1,10 +0,0 @@ -enum Thing { - Foo(u8), - Bar, - Baz -} - -fn main() { - let Thing::Foo(y) = Thing::Foo(1); - //~^ ERROR refutable pattern in local binding: `Thing::Bar` and `Thing::Baz` not covered -} diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs b/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs deleted file mode 100644 index 7c9aa51e7484..000000000000 --- a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } -//~^ 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 -} diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs b/src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs deleted file mode 100644 index a2d9e1935de7..000000000000 --- a/src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs +++ /dev/null @@ -1,5 +0,0 @@ -fn main() { - let f = |3: isize| println!("hello"); - //~^ ERROR refutable pattern in function argument: `_` not covered - f(4); -} diff --git a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs b/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs deleted file mode 100644 index ac819dce6db2..000000000000 --- a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs +++ /dev/null @@ -1,10 +0,0 @@ -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 - //~| HELP introduce a variable instead - //~| SUGGESTION a_var - - const A: i32 = 2; - //~^ constant defined here -} diff --git a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs b/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs deleted file mode 100644 index a3bb76d7e3b7..000000000000 --- a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs +++ /dev/null @@ -1,28 +0,0 @@ -// known-bug - -// 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 () -where - (): Trait, - T: OtherTrait, -{} - -trait OtherTrait {} -impl OtherTrait for u32 {} - -fn require_trait() -where - (): Trait -{} - -fn main() { - require_trait::<_, _>(); - //~^ ERROR overflow evaluating -} 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`. 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 diff --git a/src/tools/clippy/.github/driver.sh b/src/tools/clippy/.github/driver.sh index 6ff189fc8592..798782340ee7 100644 --- a/src/tools/clippy/.github/driver.sh +++ b/src/tools/clippy/.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/src/tools/clippy/CHANGELOG.md b/src/tools/clippy/CHANGELOG.md index 02f3188f8be0..8e31e8f0d981 100644 --- a/src/tools/clippy/CHANGELOG.md +++ b/src/tools/clippy/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/src/tools/clippy/book/src/installation.md b/src/tools/clippy/book/src/installation.md index b2a28d0be622..cce888b17d4d 100644 --- a/src/tools/clippy/book/src/installation.md +++ b/src/tools/clippy/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. diff --git a/src/tools/clippy/clippy_dev/src/lib.rs b/src/tools/clippy/clippy_dev/src/lib.rs index 80bb83af43b1..e70488165b99 100644 --- a/src/tools/clippy/clippy_dev/src/lib.rs +++ b/src/tools/clippy/clippy_dev/src/lib.rs @@ -5,6 +5,9 @@ // warn on lints, that are included in `rust-lang/rust`s bootstrap #![warn(rust_2018_idioms, unused_lifetimes)] +// The `rustc_driver` crate seems to be required in order to use the `rust_lexer` crate. +#[allow(unused_extern_crates)] +extern crate rustc_driver; extern crate rustc_lexer; use std::path::PathBuf; diff --git a/src/tools/clippy/clippy_lints/src/box_default.rs b/src/tools/clippy/clippy_lints/src/box_default.rs index 91900542af83..9d98a6bab710 100644 --- a/src/tools/clippy/clippy_lints/src/box_default.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/copies.rs b/src/tools/clippy/clippy_lints/src/copies.rs index 0e3d9317590f..f10c35cde52a 100644 --- a/src/tools/clippy/clippy_lints/src/copies.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/dbg_macro.rs b/src/tools/clippy/clippy_lints/src/dbg_macro.rs index fe9f4f9ae3cb..799e71e847a9 100644 --- a/src/tools/clippy/clippy_lints/src/dbg_macro.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/declared_lints.rs b/src/tools/clippy/clippy_lints/src/declared_lints.rs index 2982460c9cfa..91ca73633f06 100644 --- a/src/tools/clippy/clippy_lints/src/declared_lints.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/default.rs b/src/tools/clippy/clippy_lints/src/default.rs index 7f937de1dd31..a04693f4637a 100644 --- a/src/tools/clippy/clippy_lints/src/default.rs +++ b/src/tools/clippy/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, @@ -170,7 +169,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/src/tools/clippy/clippy_lints/src/dereference.rs b/src/tools/clippy/clippy_lints/src/dereference.rs index f327c9a71b3c..05f2b92c0370 100644 --- a/src/tools/clippy/clippy_lints/src/dereference.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/derivable_impls.rs b/src/tools/clippy/clippy_lints/src/derivable_impls.rs index ae8f6b794499..bc18e2e5ed5f 100644 --- a/src/tools/clippy/clippy_lints/src/derivable_impls.rs +++ b/src/tools/clippy/clippy_lints/src/derivable_impls.rs @@ -1,12 +1,15 @@ 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; 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_session::{declare_lint_pass, declare_tool_lint}; +use rustc_middle::ty::{AdtDef, DefIdTree}; +use rustc_session::{declare_tool_lint, impl_lint_pass}; use rustc_span::sym; declare_clippy_lint! { @@ -51,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 { @@ -61,6 +75,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,49 +189,16 @@ 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() && self.msrv.meets(msrvs::DEFAULT_ENUM_ATTRIBUTE) { + check_enum(cx, item, func_expr, adt_def); } } } } + + extract_msrv_attr!(LateContext); } diff --git a/src/tools/clippy/clippy_lints/src/derive.rs b/src/tools/clippy/clippy_lints/src/derive.rs index cf3483d4c00b..f4b15e0916db 100644 --- a/src/tools/clippy/clippy_lints/src/derive.rs +++ b/src/tools/clippy/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; @@ -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, @@ -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, + DERIVED_HASH_WITH_MANUAL_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); @@ -366,6 +360,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/src/tools/clippy/clippy_lints/src/drop_forget_ref.rs b/src/tools/clippy/clippy_lints/src/drop_forget_ref.rs index 4721a7b37056..11e1bcdf12d1 100644 --- a/src/tools/clippy/clippy_lints/src/drop_forget_ref.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/empty_structs_with_brackets.rs b/src/tools/clippy/clippy_lints/src/empty_structs_with_brackets.rs index 08bf80a42290..c3a020433de8 100644 --- a/src/tools/clippy/clippy_lints/src/empty_structs_with_brackets.rs +++ b/src/tools/clippy/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); }, ); } diff --git a/src/tools/clippy/clippy_lints/src/lib.rs b/src/tools/clippy/clippy_lints/src/lib.rs index dcd8ca81ae87..d8e2ae02c5a6 100644 --- a/src/tools/clippy/clippy_lints/src/lib.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs b/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs index 27ba27202bf7..3bca93d80aa7 100644 --- a/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/loops/single_element_loop.rs b/src/tools/clippy/clippy_lints/src/loops/single_element_loop.rs index f4b47808dfaa..744fd61bd135 100644 --- a/src/tools/clippy/clippy_lints/src/loops/single_element_loop.rs +++ b/src/tools/clippy/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::contains_break_or_continue; use if_chain::if_chain; use rustc_ast::util::parser::PREC_PREFIX; use rustc_ast::Mutability; @@ -67,6 +68,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/src/tools/clippy/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs b/src/tools/clippy/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs index d226c0bba659..0b3bf22743fa 100644 --- a/src/tools/clippy/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs +++ b/src/tools/clippy/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs @@ -1,7 +1,10 @@ -use clippy_utils::diagnostics::span_lint_and_help; +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::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}; @@ -15,6 +18,15 @@ pub(super) fn check<'tcx>( recv: &'tcx Expr<'_>, arg: &'tcx Expr<'_>, ) { + if let ExprKind::MethodCall(path_segment, ..) = recv.kind { + if matches!( + path_segment.ident.name.as_str(), + "to_lowercase" | "to_uppercase" | "to_ascii_lowercase" | "to_ascii_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); @@ -28,13 +40,37 @@ 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"); + if let Some(mut recv_source) = snippet_opt(cx, recv.span) { + + 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, + ); + } + } ); } } diff --git a/src/tools/clippy/clippy_lints/src/methods/clone_on_copy.rs b/src/tools/clippy/clippy_lints/src/methods/clone_on_copy.rs index 7c7938dd2e8b..3795c0ec2509 100644 --- a/src/tools/clippy/clippy_lints/src/methods/clone_on_copy.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/methods/filter_map.rs b/src/tools/clippy/clippy_lints/src/methods/filter_map.rs index f888c58a72de..fc80f2eeae01 100644 --- a/src/tools/clippy/clippy_lints/src/methods/filter_map.rs +++ b/src/tools/clippy/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); + } } } diff --git a/src/tools/clippy/clippy_lints/src/methods/iter_kv_map.rs b/src/tools/clippy/clippy_lints/src/methods/iter_kv_map.rs index 2244ebfb1292..c87f5daab6f2 100644 --- a/src/tools/clippy/clippy_lints/src/methods/iter_kv_map.rs +++ b/src/tools/clippy/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, 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( @@ -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}{bound_ident}| {})", snippet_with_applicability(cx, body_expr.span, "/* body */", &mut applicability)), applicability, ); diff --git a/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs b/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs index 15c1c618c513..fe88fa41fd91 100644 --- a/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/mutex_atomic.rs b/src/tools/clippy/clippy_lints/src/mutex_atomic.rs index 09cb53331763..dc866ab6373b 100644 --- a/src/tools/clippy/clippy_lints/src/mutex_atomic.rs +++ b/src/tools/clippy/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. @@ -39,8 +43,8 @@ declare_clippy_lint! { /// ``` #[clippy::version = "pre 1.29.0"] pub MUTEX_ATOMIC, - nursery, - "using a mutex where an atomic value could be used instead" + restriction, + "using a mutex where an atomic value could be used instead." } declare_clippy_lint! { diff --git a/src/tools/clippy/clippy_lints/src/operators/arithmetic_side_effects.rs b/src/tools/clippy/clippy_lints/src/operators/arithmetic_side_effects.rs index 4fbc8398e373..cff82b875f11 100644 --- a/src/tools/clippy/clippy_lints/src/operators/arithmetic_side_effects.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/ranges.rs b/src/tools/clippy/clippy_lints/src/ranges.rs index 0a1b9d173cf9..fc655fe2d0bb 100644 --- a/src/tools/clippy/clippy_lints/src/ranges.rs +++ b/src/tools/clippy/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. diff --git a/src/tools/clippy/clippy_lints/src/redundant_clone.rs b/src/tools/clippy/clippy_lints/src/redundant_clone.rs index 0e7c5cca7240..c1677fb3da1c 100644 --- a/src/tools/clippy/clippy_lints/src/redundant_clone.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/renamed_lints.rs b/src/tools/clippy/clippy_lints/src/renamed_lints.rs index 72c25592609b..9f487dedb8cb 100644 --- a/src/tools/clippy/clippy_lints/src/renamed_lints.rs +++ b/src/tools/clippy/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/src/tools/clippy/clippy_lints/src/returns.rs b/src/tools/clippy/clippy_lints/src/returns.rs index d4d506605206..bbbd9e4989e9 100644 --- a/src/tools/clippy/clippy_lints/src/returns.rs +++ b/src/tools/clippy/clippy_lints/src/returns.rs @@ -210,22 +210,25 @@ fn check_final_expr<'tcx>( // 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; + && 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 { - // check if expr return nothing - let ret_span = if inner.is_none() && replacement == RetReplacement::Empty { - extend_span_to_previous_non_ws(cx, peeled_drop_expr.span) - } else { - peeled_drop_expr.span - }; + if !cx.tcx.hir().attrs(expr.hir_id).is_empty() { + return; + } + let borrows = inner.map_or(false, |inner| last_statement_borrows(cx, inner)); + if borrows { + return; + } + // check if expr return nothing + let ret_span = if inner.is_none() && replacement == RetReplacement::Empty { + extend_span_to_previous_non_ws(cx, peeled_drop_expr.span) + } else { + peeled_drop_expr.span + }; - emit_return_lint(cx, ret_span, semi_spans, inner.as_ref().map(|i| i.span), replacement); - } - } + emit_return_lint(cx, ret_span, semi_spans, inner.as_ref().map(|i| i.span), replacement); }, ExprKind::If(_, then, else_clause_opt) => { check_block_return(cx, &then.kind, semi_spans.clone()); @@ -292,7 +295,7 @@ fn last_statement_borrows<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { ControlFlow::Break(()) } else { - ControlFlow::Continue(Descend::from(!expr.span.from_expansion())) + ControlFlow::Continue(Descend::from(!e.span.from_expansion())) } }) .is_some() diff --git a/src/tools/clippy/clippy_lints/src/types/mod.rs b/src/tools/clippy/clippy_lints/src/types/mod.rs index c14f056a1f2d..229478b7ce3c 100644 --- a/src/tools/clippy/clippy_lints/src/types/mod.rs +++ b/src/tools/clippy/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. diff --git a/src/tools/clippy/clippy_lints/src/unused_self.rs b/src/tools/clippy/clippy_lints/src/unused_self.rs index 42bccc7212b3..f864c520302e 100644 --- a/src/tools/clippy/clippy_lints/src/unused_self.rs +++ b/src/tools/clippy/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, @@ -72,7 +89,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/src/tools/clippy/clippy_lints/src/utils/internal_lints/metadata_collector.rs b/src/tools/clippy/clippy_lints/src/utils/internal_lints/metadata_collector.rs index c86f24cbd378..c4d8c28f0606 100644 --- a/src/tools/clippy/clippy_lints/src/utils/internal_lints/metadata_collector.rs +++ b/src/tools/clippy/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_parent((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/src/tools/clippy/clippy_utils/src/lib.rs b/src/tools/clippy/clippy_utils/src/lib.rs index 8290fe9ecb4c..7a4a9036dd36 100644 --- a/src/tools/clippy/clippy_utils/src/lib.rs +++ b/src/tools/clippy/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; @@ -116,6 +119,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 +1258,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::OnlyBodies; + 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 } @@ -1304,6 +1320,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 @@ -2244,6 +2261,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/src/tools/clippy/clippy_utils/src/mir/possible_borrower.rs b/src/tools/clippy/clippy_utils/src/mir/possible_borrower.rs index 395d46e7a2f8..9adae7733894 100644 --- a/src/tools/clippy/clippy_utils/src/mir/possible_borrower.rs +++ b/src/tools/clippy/clippy_utils/src/mir/possible_borrower.rs @@ -1,16 +1,11 @@ -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 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; @@ -18,120 +13,78 @@ use std::ops::ControlFlow; /// 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<'tcx>>, + ) -> 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 +124,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 +163,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<'tcx>>, + // 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(Cow::Owned(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/src/tools/clippy/clippy_utils/src/msrvs.rs b/src/tools/clippy/clippy_utils/src/msrvs.rs index ba5bc9c3135d..dbf9f3b621d7 100644 --- a/src/tools/clippy/clippy_utils/src/msrvs.rs +++ b/src/tools/clippy/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 { diff --git a/src/tools/clippy/clippy_utils/src/paths.rs b/src/tools/clippy/clippy_utils/src/paths.rs index 9ca50105ae57..95eebab75677 100644 --- a/src/tools/clippy/clippy_utils/src/paths.rs +++ b/src/tools/clippy/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")] diff --git a/src/tools/clippy/clippy_utils/src/visitors.rs b/src/tools/clippy/clippy_utils/src/visitors.rs index 863fb60fcfca..14c01a60b4c3 100644 --- a/src/tools/clippy/clippy_utils/src/visitors.rs +++ b/src/tools/clippy/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() +} diff --git a/src/tools/clippy/rust-toolchain b/src/tools/clippy/rust-toolchain index 9399d422036d..40a6f47095ec 100644 --- a/src/tools/clippy/rust-toolchain +++ b/src/tools/clippy/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"] diff --git a/src/tools/clippy/src/driver.rs b/src/tools/clippy/src/driver.rs index bcc096c570e1..d521e8d88398 100644 --- a/src/tools/clippy/src/driver.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/integration.rs b/src/tools/clippy/tests/integration.rs index 818ff70b33f4..a771d8b87c81 100644 --- a/src/tools/clippy/tests/integration.rs +++ b/src/tools/clippy/tests/integration.rs @@ -1,3 +1,12 @@ +//! 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)] diff --git a/src/tools/clippy/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs b/src/tools/clippy/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs index 36db9e54a228..fb5b1b193f84 100644 --- a/src/tools/clippy/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr b/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr index 46efb86dcfc5..859383a71194 100644 --- a/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/arithmetic_side_effects.rs b/src/tools/clippy/tests/ui/arithmetic_side_effects.rs index b5ed8988a518..918cf81c600a 100644 --- a/src/tools/clippy/tests/ui/arithmetic_side_effects.rs +++ b/src/tools/clippy/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, @@ -12,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, @@ -125,6 +190,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,8 +235,9 @@ 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; + let mut _custom = Custom; // Assign _n += 1; @@ -172,6 +250,36 @@ 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; + _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; @@ -193,36 +301,73 @@ pub fn runtime_ops() { _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. +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/src/tools/clippy/tests/ui/arithmetic_side_effects.stderr b/src/tools/clippy/tests/ui/arithmetic_side_effects.stderr index 9fe4b7cf28d8..5e349f6b497c 100644 --- a/src/tools/clippy/tests/ui/arithmetic_side_effects.stderr +++ b/src/tools/clippy/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:243:5 | LL | _n += 1; | ^^^^^^^ @@ -7,328 +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:166: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:167: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:168: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:169: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:170: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:171: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:172: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:173: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:174: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:177:10 + --> $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:254:5 + | +LL | _n += &-1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:256:5 + | +LL | _n -= &-1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:258:5 + | +LL | _n /= &-0; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:260:5 + | +LL | _n %= &-0; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:262:5 + | +LL | _n *= &-2; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:178: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:179: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:180: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:181: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:182: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:183: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:184: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:185: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:186: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:187: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:188: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:189: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:190: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:191: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:192: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:193: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:194: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:195: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:198: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:199: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:200: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:201: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:202: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:203: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:204: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:205: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:206: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:207: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:208: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:209: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:210: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:211: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:212: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:213: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:214: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:215: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:216: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:217:13 - | -LL | let _ = Custom * 1; - | ^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:218:13 - | -LL | let _ = Custom * 2; - | ^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:219:13 - | -LL | let _ = Custom * 0.0; - | ^^^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:220:13 - | -LL | let _ = Custom * 1.0; - | ^^^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:221: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:325: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:326: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: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:338:5 + | +LL | i * 2; + | ^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:341:5 + | +LL | -i; + | ^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:343:5 + | +LL | i << 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:353:5 + | +LL | i -= 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:356:5 + | +LL | i /= 0; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:359:5 + | +LL | i /= var2; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:363:5 + | +LL | i %= var1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $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:365:5 + | +LL | i <<= 3; + | ^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:366:5 + | +LL | i >>= 2; + | ^^^^^^^ + +error: aborting due to 99 previous errors diff --git a/src/tools/clippy/tests/ui/box_default.fixed b/src/tools/clippy/tests/ui/box_default.fixed index 911fa856aa0a..7e9f074fdcab 100644 --- a/src/tools/clippy/tests/ui/box_default.fixed +++ b/src/tools/clippy/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()); } @@ -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/src/tools/clippy/tests/ui/box_default.rs b/src/tools/clippy/tests/ui/box_default.rs index 20019c2ee5a0..5c8d0b8354cc 100644 --- a/src/tools/clippy/tests/ui/box_default.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/box_default.stderr b/src/tools/clippy/tests/ui/box_default.stderr index 5ea410331afb..249eb340f96c 100644 --- a/src/tools/clippy/tests/ui/box_default.stderr +++ b/src/tools/clippy/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 @@ -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 diff --git a/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.fixed b/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.fixed new file mode 100644 index 000000000000..5fbaa64db39e --- /dev/null +++ b/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.fixed @@ -0,0 +1,67 @@ +// 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 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"); + + // 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")); + + // 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"); + + // 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/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.rs b/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.rs index 6f0485b5279b..3c0d4821f9f3 100644 --- a/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.rs +++ b/src/tools/clippy/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") } @@ -17,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"); @@ -24,6 +31,10 @@ fn main() { let _ = String::new().ends_with(".EXT12"); let _ = "str".ends_with(".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/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.stderr b/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.stderr index a28dd8bd5ad3..44c8e3fdf740 100644 --- a/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.stderr +++ b/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.stderr @@ -1,43 +1,87 @@ 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: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"); - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = 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:32: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: aborting due to 6 previous errors diff --git a/src/tools/clippy/tests/ui/clone_on_copy.stderr b/src/tools/clippy/tests/ui/clone_on_copy.stderr index 42ae227777c7..862234d204be 100644 --- a/src/tools/clippy/tests/ui/clone_on_copy.stderr +++ b/src/tools/clippy/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/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/clippy/tests/ui/dbg_macro.stderr b/src/tools/clippy/tests/ui/dbg_macro.stderr index e6a65b46d975..ddb5f1342e99 100644 --- a/src/tools/clippy/tests/ui/dbg_macro.stderr +++ b/src/tools/clippy/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; | ~ diff --git a/src/tools/clippy/tests/ui/default_trait_access.fixed b/src/tools/clippy/tests/ui/default_trait_access.fixed index eedd43619392..5640599d48ae 100644 --- a/src/tools/clippy/tests/ui/default_trait_access.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/default_trait_access.stderr b/src/tools/clippy/tests/ui/default_trait_access.stderr index 49b2dde3f1e8..e4f73c08d190 100644 --- a/src/tools/clippy/tests/ui/default_trait_access.stderr +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/derivable_impls.fixed b/src/tools/clippy/tests/ui/derivable_impls.fixed index 7dcdfb0937e8..ee8456f5deb8 100644 --- a/src/tools/clippy/tests/ui/derivable_impls.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/derivable_impls.rs b/src/tools/clippy/tests/ui/derivable_impls.rs index 625cbcdde230..14af419bcad1 100644 --- a/src/tools/clippy/tests/ui/derivable_impls.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/derivable_impls.stderr b/src/tools/clippy/tests/ui/derivable_impls.stderr index c1db5a58b1f5..81963c3be5b5 100644 --- a/src/tools/clippy/tests/ui/derivable_impls.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/derive.rs b/src/tools/clippy/tests/ui/derive.rs index b276c384c04e..6e0ce55f57d9 100644 --- a/src/tools/clippy/tests/ui/derive.rs +++ b/src/tools/clippy/tests/ui/derive.rs @@ -86,4 +86,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() {} diff --git a/src/tools/clippy/tests/ui/derive_hash_xor_eq.stderr b/src/tools/clippy/tests/ui/derive_hash_xor_eq.stderr deleted file mode 100644 index 16c92397804e..000000000000 --- a/src/tools/clippy/tests/ui/derive_hash_xor_eq.stderr +++ /dev/null @@ -1,59 +0,0 @@ -error: you are deriving `Hash` but have implemented `PartialEq` explicitly - --> $DIR/derive_hash_xor_eq.rs:12:10 - | -LL | #[derive(Hash)] - | ^^^^ - | -note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:15:1 - | -LL | impl PartialEq for Bar { - | ^^^^^^^^^^^^^^^^^^^^^^ - = note: `#[deny(clippy::derive_hash_xor_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 - | -LL | #[derive(Hash)] - | ^^^^ - | -note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:24:1 - | -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 - diff --git a/src/tools/clippy/tests/ui/derive_hash_xor_eq.rs b/src/tools/clippy/tests/ui/derived_hash_with_manual_eq.rs similarity index 62% rename from src/tools/clippy/tests/ui/derive_hash_xor_eq.rs rename to src/tools/clippy/tests/ui/derived_hash_with_manual_eq.rs index 813ddc566464..8ad09a8de43d 100644 --- a/src/tools/clippy/tests/ui/derive_hash_xor_eq.rs +++ b/src/tools/clippy/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; @@ -34,23 +36,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/src/tools/clippy/tests/ui/derived_hash_with_manual_eq.stderr b/src/tools/clippy/tests/ui/derived_hash_with_manual_eq.stderr new file mode 100644 index 000000000000..230940f25fb6 --- /dev/null +++ b/src/tools/clippy/tests/ui/derived_hash_with_manual_eq.stderr @@ -0,0 +1,29 @@ +error: you are deriving `Hash` but have implemented `PartialEq` explicitly + --> $DIR/derived_hash_with_manual_eq.rs:12:10 + | +LL | #[derive(Hash)] + | ^^^^ + | +note: `PartialEq` implemented here + --> $DIR/derived_hash_with_manual_eq.rs:15:1 + | +LL | impl PartialEq for Bar { + | ^^^^^^^^^^^^^^^^^^^^^^ + = 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/derived_hash_with_manual_eq.rs:21:10 + | +LL | #[derive(Hash)] + | ^^^^ + | +note: `PartialEq` implemented here + --> $DIR/derived_hash_with_manual_eq.rs:24:1 + | +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: aborting due to 2 previous errors + diff --git a/src/tools/clippy/tests/ui/drop_ref.rs b/src/tools/clippy/tests/ui/drop_ref.rs index 7de0b0bbdf9a..10044e65f115 100644 --- a/src/tools/clippy/tests/ui/drop_ref.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/drop_ref.stderr b/src/tools/clippy/tests/ui/drop_ref.stderr index 4743cf79b5d3..293b9f6de832 100644 --- a/src/tools/clippy/tests/ui/drop_ref.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/field_reassign_with_default.rs b/src/tools/clippy/tests/ui/field_reassign_with_default.rs index 7367910eaa12..1f989bb12205 100644 --- a/src/tools/clippy/tests/ui/field_reassign_with_default.rs +++ b/src/tools/clippy/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())(); +} diff --git a/src/tools/clippy/tests/ui/iter_kv_map.fixed b/src/tools/clippy/tests/ui/iter_kv_map.fixed index 83fee04080fa..f2a4c284cb16 100644 --- a/src/tools/clippy/tests/ui/iter_kv_map.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/iter_kv_map.rs b/src/tools/clippy/tests/ui/iter_kv_map.rs index 7a1f1fb0198c..ad6564df4084 100644 --- a/src/tools/clippy/tests/ui/iter_kv_map.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/iter_kv_map.stderr b/src/tools/clippy/tests/ui/iter_kv_map.stderr index 9b9b04c97d81..e00da223b4dd 100644 --- a/src/tools/clippy/tests/ui/iter_kv_map.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/needless_borrow.fixed b/src/tools/clippy/tests/ui/needless_borrow.fixed index 31e1cb6c3d7f..4cb7f6b687f1 100644 --- a/src/tools/clippy/tests/ui/needless_borrow.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/needless_borrow.rs b/src/tools/clippy/tests/ui/needless_borrow.rs index 55c2738fcf27..9a01190ed8db 100644 --- a/src/tools/clippy/tests/ui/needless_borrow.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/needless_borrow.stderr b/src/tools/clippy/tests/ui/needless_borrow.stderr index 98a48d68317b..d26c317124b8 100644 --- a/src/tools/clippy/tests/ui/needless_borrow.stderr +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/needless_return.fixed b/src/tools/clippy/tests/ui/needless_return.fixed index d451be1f389a..ab1c0e590bbc 100644 --- a/src/tools/clippy/tests/ui/needless_return.fixed +++ b/src/tools/clippy/tests/ui/needless_return.fixed @@ -277,4 +277,14 @@ fn issue9947() -> Result<(), String> { do yeet "hello"; } +// without anyhow, but triggers the same bug I believe +#[expect(clippy::useless_format)] +fn issue10051() -> Result { + if true { + Ok(format!("ok!")) + } else { + Err(format!("err!")) + } +} + fn main() {} diff --git a/src/tools/clippy/tests/ui/needless_return.rs b/src/tools/clippy/tests/ui/needless_return.rs index e1a1bea2c0b8..abed338bb9b2 100644 --- a/src/tools/clippy/tests/ui/needless_return.rs +++ b/src/tools/clippy/tests/ui/needless_return.rs @@ -287,4 +287,14 @@ fn issue9947() -> Result<(), String> { do yeet "hello"; } +// without anyhow, but triggers the same bug I believe +#[expect(clippy::useless_format)] +fn issue10051() -> Result { + if true { + return Ok(format!("ok!")); + } else { + return Err(format!("err!")); + } +} + fn main() {} diff --git a/src/tools/clippy/tests/ui/needless_return.stderr b/src/tools/clippy/tests/ui/needless_return.stderr index ca2253e65863..52eabf6e1370 100644 --- a/src/tools/clippy/tests/ui/needless_return.stderr +++ b/src/tools/clippy/tests/ui/needless_return.stderr @@ -386,5 +386,21 @@ LL | let _ = 42; return; | = help: remove `return` -error: aborting due to 46 previous errors +error: unneeded `return` statement + --> $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 diff --git a/src/tools/clippy/tests/ui/redundant_clone.fixed b/src/tools/clippy/tests/ui/redundant_clone.fixed index a157b6a6f9ad..00b427450935 100644 --- a/src/tools/clippy/tests/ui/redundant_clone.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/redundant_clone.rs b/src/tools/clippy/tests/ui/redundant_clone.rs index 430672e8b8df..f899127db8d0 100644 --- a/src/tools/clippy/tests/ui/redundant_clone.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/redundant_clone.stderr b/src/tools/clippy/tests/ui/redundant_clone.stderr index 1bacc2c76af1..782590034d05 100644 --- a/src/tools/clippy/tests/ui/redundant_clone.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/rename.fixed b/src/tools/clippy/tests/ui/rename.fixed index 2f76b5752960..5076f61334d6 100644 --- a/src/tools/clippy/tests/ui/rename.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/rename.rs b/src/tools/clippy/tests/ui/rename.rs index 699c0ff464e9..64bc1ca7116c 100644 --- a/src/tools/clippy/tests/ui/rename.rs +++ b/src/tools/clippy/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)] diff --git a/src/tools/clippy/tests/ui/rename.stderr b/src/tools/clippy/tests/ui/rename.stderr index 9af58dc75a68..27a0263292ef 100644 --- a/src/tools/clippy/tests/ui/rename.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/single_element_loop.fixed b/src/tools/clippy/tests/ui/single_element_loop.fixed index 63d31ff83f9b..a0dcc0172e8b 100644 --- a/src/tools/clippy/tests/ui/single_element_loop.fixed +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/single_element_loop.rs b/src/tools/clippy/tests/ui/single_element_loop.rs index 2cda5a329d25..bc014035c98a 100644 --- a/src/tools/clippy/tests/ui/single_element_loop.rs +++ b/src/tools/clippy/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/src/tools/clippy/tests/ui/single_element_loop.stderr b/src/tools/clippy/tests/ui/single_element_loop.stderr index 0aeb8da1a2e2..14437a59745e 100644 --- a/src/tools/clippy/tests/ui/single_element_loop.stderr +++ b/src/tools/clippy/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 diff --git a/src/tools/clippy/tests/ui/suspicious_to_owned.stderr b/src/tools/clippy/tests/ui/suspicious_to_owned.stderr index ae1aec34d82e..dec3f50d6f1b 100644 --- a/src/tools/clippy/tests/ui/suspicious_to_owned.stderr +++ b/src/tools/clippy/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(); diff --git a/src/tools/clippy/tests/ui/unnecessary_clone.stderr b/src/tools/clippy/tests/ui/unnecessary_clone.stderr index 94cc7777acac..6022d9fa4c5c 100644 --- a/src/tools/clippy/tests/ui/unnecessary_clone.stderr +++ b/src/tools/clippy/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(); diff --git a/src/tools/clippy/tests/ui/unused_self.rs b/src/tools/clippy/tests/ui/unused_self.rs index 92e8e1dba69d..55bd5607185c 100644 --- a/src/tools/clippy/tests/ui/unused_self.rs +++ b/src/tools/clippy/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; diff --git a/src/tools/clippy/tests/ui/unused_self.stderr b/src/tools/clippy/tests/ui/unused_self.stderr index 23186122a9af..919f9b6efdab 100644 --- a/src/tools/clippy/tests/ui/unused_self.stderr +++ b/src/tools/clippy/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 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/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 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/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, 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/src/tools/rust-analyzer/Cargo.lock b/src/tools/rust-analyzer/Cargo.lock index 41c5d36671de..d27ae416f04b 100644 --- a/src/tools/rust-analyzer/Cargo.lock +++ b/src/tools/rust-analyzer/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" @@ -171,9 +177,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chalk-derive" -version = "0.86.0" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5499d415d855b5094366a824815341893ad3de0ecb6048c430118bdae6d27402" +checksum = "4df80a3fbc1f0e59f560eeeebca94bf655566a8ad3023c210a109deb6056455a" dependencies = [ "proc-macro2", "quote", @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "chalk-ir" -version = "0.86.0" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3800118c76a48507b0eece3a01f3a429b5c478d203c493096e6040c67ab960e1" +checksum = "f39e5272016916956298cceea5147006f897972c274a768ed4d6e074efe5d3fb" dependencies = [ "bitflags", "chalk-derive", @@ -194,9 +200,9 @@ dependencies = [ [[package]] name = "chalk-recursive" -version = "0.86.0" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1baf60628fd73104d1f8562586a52d48f37f1e84435aab2e62674b1fd935b8c8" +checksum = "d9d60b42ad7478d3e027e2f9ea4e99fbbb8fdee0c8c3cf068be269f57e603618" dependencies = [ "chalk-derive", "chalk-ir", @@ -207,9 +213,9 @@ dependencies = [ [[package]] name = "chalk-solve" -version = "0.86.0" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9c3c068f9358786348e58a1b94ef0a5cf90a9810fc1f10fda896f0b5d80185" +checksum = "ab30620ea5b36819525eaab2204f4b8e1842fc7ee36826424a28bef59ae7fecf" dependencies = [ "chalk-derive", "chalk-ir", @@ -510,6 +516,8 @@ dependencies = [ "fst", "hashbrown", "hir-expand", + "hkalbasi-rustc-ap-rustc_abi", + "hkalbasi-rustc-ap-rustc_index", "indexmap", "itertools", "la-arena", @@ -555,6 +563,7 @@ version = "0.0.0" dependencies = [ "arrayvec", "base-db", + "bitflags", "chalk-derive", "chalk-ir", "chalk-recursive", @@ -564,6 +573,7 @@ dependencies = [ "expect-test", "hir-def", "hir-expand", + "hkalbasi-rustc-ap-rustc_index", "itertools", "la-arena", "limit", @@ -581,6 +591,27 @@ dependencies = [ "typed-arena", ] +[[package]] +name = "hkalbasi-rustc-ap-rustc_abi" +version = "0.0.20221221" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adabaadad9aa7576f97af02241cdf5554d62fb3d51a84cb05d77ba28edd3013f" +dependencies = [ + "bitflags", + "hkalbasi-rustc-ap-rustc_index", + "tracing", +] + +[[package]] +name = "hkalbasi-rustc-ap-rustc_index" +version = "0.0.20221221" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4d3c48474e09afb0f5efbd6f758e05411699301a113c47d454d28ec7059d00e" +dependencies = [ + "arrayvec", + "smallvec", +] + [[package]] name = "home" version = "0.5.4" @@ -631,6 +662,7 @@ dependencies = [ "ide-db", "itertools", "profile", + "smallvec", "sourcegen", "stdx", "syntax", @@ -1750,6 +1782,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" @@ -2148,4 +2207,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/src/tools/rust-analyzer/crates/base-db/src/fixture.rs b/src/tools/rust-analyzer/crates/base-db/src/fixture.rs index 5b7828a26996..6f83ea40e76f 100644 --- a/src/tools/rust-analyzer/crates/base-db/src/fixture.rs +++ b/src/tools/rust-analyzer/crates/base-db/src/fixture.rs @@ -162,6 +162,7 @@ impl ChangeFixture { Ok(Vec::new()), false, origin, + meta.target_data_layout.as_deref().map(Arc::from), ); let prev = crates.insert(crate_name.clone(), crate_id); assert!(prev.is_none()); @@ -197,6 +198,7 @@ impl ChangeFixture { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); } else { for (from, to, prelude) in crate_deps { @@ -210,6 +212,8 @@ impl ChangeFixture { .unwrap(); } } + let target_layout = + crate_graph.iter().next().and_then(|it| crate_graph[it].target_layout.clone()); if let Some(mini_core) = mini_core { let core_file = file_id; @@ -234,6 +238,7 @@ impl ChangeFixture { Ok(Vec::new()), false, CrateOrigin::Lang(LangCrateOrigin::Core), + target_layout.clone(), ); for krate in all_crates { @@ -271,6 +276,7 @@ impl ChangeFixture { Ok(proc_macro), true, CrateOrigin::CratesIo { repo: None, name: None }, + target_layout, ); for krate in all_crates { @@ -391,6 +397,7 @@ struct FileMeta { edition: Edition, env: Env, introduce_new_source_root: Option, + target_data_layout: Option, } fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option) { @@ -400,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 { @@ -432,8 +439,9 @@ 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/src/tools/rust-analyzer/crates/base-db/src/input.rs b/src/tools/rust-analyzer/crates/base-db/src/input.rs index e7f0c4ec29bf..5fa4a8024950 100644 --- a/src/tools/rust-analyzer/crates/base-db/src/input.rs +++ b/src/tools/rust-analyzer/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 } } @@ -270,6 +270,7 @@ pub struct CrateData { pub display_name: Option, pub cfg_options: CfgOptions, pub potential_cfg_options: CfgOptions, + pub target_layout: Option>, pub env: Env, pub dependencies: Vec, pub proc_macro: ProcMacroLoadResult, @@ -328,6 +329,7 @@ impl CrateGraph { proc_macro: ProcMacroLoadResult, is_proc_macro: bool, origin: CrateOrigin, + target_layout: Option>, ) -> CrateId { let data = CrateData { root_file_id, @@ -340,6 +342,7 @@ impl CrateGraph { proc_macro, dependencies: Vec::new(), origin, + target_layout, is_proc_macro, }; let crate_id = CrateId(self.arena.len() as u32); @@ -615,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!( @@ -649,6 +652,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate2 = graph.add_crate_root( FileId(2u32), @@ -661,6 +665,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate3 = graph.add_crate_root( FileId(3u32), @@ -673,6 +678,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); assert!(graph .add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2)) @@ -699,6 +705,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate2 = graph.add_crate_root( FileId(2u32), @@ -711,6 +718,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); assert!(graph .add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2)) @@ -734,6 +742,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate2 = graph.add_crate_root( FileId(2u32), @@ -746,6 +755,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate3 = graph.add_crate_root( FileId(3u32), @@ -758,6 +768,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); assert!(graph .add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2)) @@ -781,6 +792,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); let crate2 = graph.add_crate_root( FileId(2u32), @@ -793,6 +805,7 @@ mod tests { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); assert!(graph .add_dep( diff --git a/src/tools/rust-analyzer/crates/base-db/src/lib.rs b/src/tools/rust-analyzer/crates/base-db/src/lib.rs index da11e4ae7bb9..55a51d3bbb2c 100644 --- a/src/tools/rust-analyzer/crates/base-db/src/lib.rs +++ b/src/tools/rust-analyzer/crates/base-db/src/lib.rs @@ -75,9 +75,9 @@ 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) + SourceFile::parse(&text) } /// We don't want to give HIR knowledge of source roots, hence we extract these diff --git a/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs b/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs index fd9e31ed3b4f..5f4eefa83661 100644 --- a/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/cfg/src/lib.rs b/src/tools/rust-analyzer/crates/cfg/src/lib.rs index d78ef4fb11e7..30709c968dac 100644 --- a/src/tools/rust-analyzer/crates/cfg/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/flycheck/src/lib.rs b/src/tools/rust-analyzer/crates/flycheck/src/lib.rs index 8f93dad06e3f..11f7b068ecb1 100644 --- a/src/tools/rust-analyzer/crates/flycheck/src/lib.rs +++ b/src/tools/rust-analyzer/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, @@ -60,9 +61,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(" ")) } } } @@ -293,15 +294,24 @@ 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", "--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()]); + cmd.args(["--target", target.as_str()]); } if *all_targets { cmd.arg("--all-targets"); @@ -360,13 +370,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 +391,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(); @@ -401,8 +418,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}" ))) } } @@ -467,7 +483,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/src/tools/rust-analyzer/crates/hir-def/Cargo.toml b/src/tools/rust-analyzer/crates/hir-def/Cargo.toml index 22f98ea7cd45..698be76656cc 100644 --- a/src/tools/rust-analyzer/crates/hir-def/Cargo.toml +++ b/src/tools/rust-analyzer/crates/hir-def/Cargo.toml @@ -33,6 +33,8 @@ base-db = { path = "../base-db", version = "0.0.0" } syntax = { path = "../syntax", version = "0.0.0" } profile = { path = "../profile", version = "0.0.0" } hir-expand = { path = "../hir-expand", version = "0.0.0" } +rustc_abi = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_abi", default-features = false } +rustc_index = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_index", default-features = false } mbe = { path = "../mbe", version = "0.0.0" } cfg = { path = "../cfg", version = "0.0.0" } tt = { path = "../tt", version = "0.0.0" } diff --git a/src/tools/rust-analyzer/crates/hir-def/src/adt.rs b/src/tools/rust-analyzer/crates/hir-def/src/adt.rs index 938db032fbc8..db3b41948814 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/adt.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/adt.rs @@ -1,6 +1,6 @@ //! Defines hir-level representation of structs, enums and unions -use std::{num::NonZeroU32, sync::Arc}; +use std::sync::Arc; use base_db::CrateId; use either::Either; @@ -9,6 +9,7 @@ use hir_expand::{ HirFileId, InFile, }; use la_arena::{Arena, ArenaMap}; +use rustc_abi::{Integer, IntegerType}; use syntax::ast::{self, HasName, HasVisibility}; use tt::{Delimiter, DelimiterKind, Leaf, Subtree, TokenTree}; @@ -18,6 +19,7 @@ use crate::{ db::DefDatabase, intern::Interned, item_tree::{AttrOwner, Field, FieldAstId, Fields, ItemTree, ModItem, RawVisibilityId}, + layout::{Align, ReprFlags, ReprOptions}, nameres::diagnostics::DefDiagnostic, src::HasChildSource, src::HasSource, @@ -34,16 +36,18 @@ use cfg::CfgOptions; pub struct StructData { pub name: Name, pub variant_data: Arc, - pub repr: Option, + pub repr: Option, pub visibility: RawVisibility, + pub rustc_has_incoherent_inherent_impls: bool, } #[derive(Debug, Clone, PartialEq, Eq)] pub struct EnumData { pub name: Name, pub variants: Arena, - pub repr: Option, + pub repr: Option, pub visibility: RawVisibility, + pub rustc_has_incoherent_inherent_impls: bool, } #[derive(Debug, Clone, PartialEq, Eq)] @@ -67,80 +71,91 @@ pub struct FieldData { pub visibility: RawVisibility, } -#[derive(Copy, Debug, Clone, PartialEq, Eq)] -pub enum ReprKind { - C, - BuiltinInt { builtin: Either, is_c: bool }, - Transparent, - Default, -} - -#[derive(Copy, Debug, Clone, PartialEq, Eq)] -pub struct ReprData { - pub kind: ReprKind, - pub packed: bool, - pub align: Option, -} - fn repr_from_value( db: &dyn DefDatabase, krate: CrateId, item_tree: &ItemTree, of: AttrOwner, -) -> Option { +) -> Option { item_tree.attrs(db, krate, of).by_key("repr").tt_values().find_map(parse_repr_tt) } -fn parse_repr_tt(tt: &Subtree) -> Option { +fn parse_repr_tt(tt: &Subtree) -> Option { match tt.delimiter { Some(Delimiter { kind: DelimiterKind::Parenthesis, .. }) => {} _ => return None, } - let mut data = ReprData { kind: ReprKind::Default, packed: false, align: None }; + let mut flags = ReprFlags::empty(); + let mut int = None; + let mut max_align: Option = None; + let mut min_pack: Option = None; let mut tts = tt.token_trees.iter().peekable(); while let Some(tt) = tts.next() { if let TokenTree::Leaf(Leaf::Ident(ident)) = tt { - match &*ident.text { + flags.insert(match &*ident.text { "packed" => { - data.packed = true; - if let Some(TokenTree::Subtree(_)) = tts.peek() { + let pack = if let Some(TokenTree::Subtree(tt)) = tts.peek() { tts.next(); - } + if let Some(TokenTree::Leaf(Leaf::Literal(lit))) = tt.token_trees.first() { + lit.text.parse().unwrap_or_default() + } else { + 0 + } + } else { + 0 + }; + let pack = Align::from_bytes(pack).unwrap(); + min_pack = + Some(if let Some(min_pack) = min_pack { min_pack.min(pack) } else { pack }); + ReprFlags::empty() } "align" => { if let Some(TokenTree::Subtree(tt)) = tts.peek() { tts.next(); if let Some(TokenTree::Leaf(Leaf::Literal(lit))) = tt.token_trees.first() { if let Ok(align) = lit.text.parse() { - data.align = Some(align); + let align = Align::from_bytes(align).ok(); + max_align = max_align.max(align); } } } + ReprFlags::empty() } - "C" => { - if let ReprKind::BuiltinInt { is_c, .. } = &mut data.kind { - *is_c = true; - } else { - data.kind = ReprKind::C; - } - } - "transparent" => data.kind = ReprKind::Transparent, + "C" => ReprFlags::IS_C, + "transparent" => ReprFlags::IS_TRANSPARENT, repr => { - let is_c = matches!(data.kind, ReprKind::C); if let Some(builtin) = BuiltinInt::from_suffix(repr) .map(Either::Left) .or_else(|| BuiltinUint::from_suffix(repr).map(Either::Right)) { - data.kind = ReprKind::BuiltinInt { builtin, is_c }; + int = Some(match builtin { + Either::Left(bi) => match bi { + BuiltinInt::Isize => IntegerType::Pointer(true), + BuiltinInt::I8 => IntegerType::Fixed(Integer::I8, true), + BuiltinInt::I16 => IntegerType::Fixed(Integer::I16, true), + BuiltinInt::I32 => IntegerType::Fixed(Integer::I32, true), + BuiltinInt::I64 => IntegerType::Fixed(Integer::I64, true), + BuiltinInt::I128 => IntegerType::Fixed(Integer::I128, true), + }, + Either::Right(bu) => match bu { + BuiltinUint::Usize => IntegerType::Pointer(false), + BuiltinUint::U8 => IntegerType::Fixed(Integer::I8, false), + BuiltinUint::U16 => IntegerType::Fixed(Integer::I16, false), + BuiltinUint::U32 => IntegerType::Fixed(Integer::I32, false), + BuiltinUint::U64 => IntegerType::Fixed(Integer::I64, false), + BuiltinUint::U128 => IntegerType::Fixed(Integer::I128, false), + }, + }); } + ReprFlags::empty() } - } + }) } } - Some(data) + Some(ReprOptions { int, align: max_align, pack: min_pack, flags, field_shuffle_seed: 0 }) } impl StructData { @@ -157,6 +172,10 @@ impl StructData { let item_tree = loc.id.item_tree(db); let repr = repr_from_value(db, krate, &item_tree, ModItem::from(loc.id.value).into()); let cfg_options = db.crate_graph()[loc.container.krate].cfg_options.clone(); + let rustc_has_incoherent_inherent_impls = item_tree + .attrs(db, loc.container.krate, ModItem::from(loc.id.value).into()) + .by_key("rustc_has_incoherent_inherent_impls") + .exists(); let strukt = &item_tree[loc.id.value]; let (variant_data, diagnostics) = lower_fields( @@ -175,6 +194,7 @@ impl StructData { variant_data: Arc::new(variant_data), repr, visibility: item_tree[strukt.visibility].clone(), + rustc_has_incoherent_inherent_impls, }), diagnostics.into(), ) @@ -194,6 +214,11 @@ impl StructData { let repr = repr_from_value(db, krate, &item_tree, ModItem::from(loc.id.value).into()); let cfg_options = db.crate_graph()[loc.container.krate].cfg_options.clone(); + let rustc_has_incoherent_inherent_impls = item_tree + .attrs(db, loc.container.krate, ModItem::from(loc.id.value).into()) + .by_key("rustc_has_incoherent_inherent_impls") + .exists(); + let union = &item_tree[loc.id.value]; let (variant_data, diagnostics) = lower_fields( db, @@ -211,6 +236,7 @@ impl StructData { variant_data: Arc::new(variant_data), repr, visibility: item_tree[union.visibility].clone(), + rustc_has_incoherent_inherent_impls, }), diagnostics.into(), ) @@ -231,6 +257,10 @@ impl EnumData { let item_tree = loc.id.item_tree(db); let cfg_options = db.crate_graph()[krate].cfg_options.clone(); let repr = repr_from_value(db, krate, &item_tree, ModItem::from(loc.id.value).into()); + let rustc_has_incoherent_inherent_impls = item_tree + .attrs(db, loc.container.krate, ModItem::from(loc.id.value).into()) + .by_key("rustc_has_incoherent_inherent_impls") + .exists(); let enum_ = &item_tree[loc.id.value]; let mut variants = Arena::new(); @@ -271,6 +301,7 @@ impl EnumData { variants, repr, visibility: item_tree[enum_.visibility].clone(), + rustc_has_incoherent_inherent_impls, }), diagnostics.into(), ) @@ -281,10 +312,10 @@ impl EnumData { Some(id) } - pub fn variant_body_type(&self) -> Either { + pub fn variant_body_type(&self) -> IntegerType { match self.repr { - Some(ReprData { kind: ReprKind::BuiltinInt { builtin, .. }, .. }) => builtin, - _ => Either::Left(BuiltinInt::Isize), + Some(ReprOptions { int: Some(builtin), .. }) => builtin, + _ => IntegerType::Pointer(true), } } } diff --git a/src/tools/rust-analyzer/crates/hir-def/src/attr.rs b/src/tools/rust-analyzer/crates/hir-def/src/attr.rs index 2b39c6f8da86..ab5d180e1bb9 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/attr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/body.rs b/src/tools/rust-analyzer/crates/hir-def/src/body.rs index 759f3b8c04b6..78fbaa9d7d35 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/body.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/body/lower.rs b/src/tools/rust-analyzer/crates/hir-def/src/body/lower.rs index ccc01c3efca5..e8da24e3adda 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/body/lower.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/body/pretty.rs b/src/tools/rust-analyzer/crates/hir-def/src/body/pretty.rs index 162d173d5240..10b9b26bbeaa 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/body/pretty.rs +++ b/src/tools/rust-analyzer/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}") } }; @@ -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/src/tools/rust-analyzer/crates/hir-def/src/body/scope.rs b/src/tools/rust-analyzer/crates/hir-def/src/body/scope.rs index 45f64ebb0600..2617d4288a3a 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/body/scope.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/builtin_attr.rs b/src/tools/rust-analyzer/crates/hir-def/src/builtin_attr.rs index 39581b33a8da..f7c1e683d0d2 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/builtin_attr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/data.rs b/src/tools/rust-analyzer/crates/hir-def/src/data.rs index 9c7696908648..e6b05f27a544 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/data.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/data.rs @@ -13,7 +13,9 @@ use crate::{ intern::Interned, item_tree::{self, AssocItem, FnFlags, ItemTree, ItemTreeId, ModItem, Param, TreeId}, nameres::{ - attr_resolution::ResolvedAttr, diagnostics::DefDiagnostic, proc_macro::ProcMacroKind, + attr_resolution::ResolvedAttr, + diagnostics::DefDiagnostic, + proc_macro::{parse_macro_name_and_helper_attrs, ProcMacroKind}, DefMap, }, type_ref::{TraitRef, TypeBound, TypeRef}, @@ -168,6 +170,7 @@ pub struct TypeAliasData { pub type_ref: Option>, pub visibility: RawVisibility, pub is_extern: bool, + pub rustc_has_incoherent_inherent_impls: bool, /// Bounds restricting the type alias itself (eg. `type Ty: Bound;` in a trait or impl). pub bounds: Vec>, } @@ -186,11 +189,17 @@ impl TypeAliasData { item_tree[typ.visibility].clone() }; + let rustc_has_incoherent_inherent_impls = item_tree + .attrs(db, loc.container.module(db).krate(), ModItem::from(loc.id.value).into()) + .by_key("rustc_has_incoherent_inherent_impls") + .exists(); + Arc::new(TypeAliasData { name: typ.name.clone(), type_ref: typ.type_ref.clone(), visibility, is_extern: matches!(loc.container, ItemContainerId::ExternBlockId(_)), + rustc_has_incoherent_inherent_impls, bounds: typ.bounds.to_vec(), }) } @@ -202,6 +211,7 @@ pub struct TraitData { pub items: Vec<(Name, AssocItemId)>, pub is_auto: bool, pub is_unsafe: bool, + pub rustc_has_incoherent_inherent_impls: bool, pub visibility: RawVisibility, /// Whether the trait has `#[rust_skip_array_during_method_dispatch]`. `hir_ty` will ignore /// method calls to this trait's methods when the receiver is an array and the crate edition is @@ -224,18 +234,17 @@ 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; let is_unsafe = tr_def.is_unsafe; let visibility = item_tree[tr_def.visibility].clone(); - let skip_array_during_method_dispatch = item_tree - .attrs(db, module_id.krate(), ModItem::from(tree_id.value).into()) - .by_key("rustc_skip_array_during_method_dispatch") - .exists(); - + let attrs = item_tree.attrs(db, module_id.krate(), ModItem::from(tree_id.value).into()); + let skip_array_during_method_dispatch = + attrs.by_key("rustc_skip_array_during_method_dispatch").exists(); + let rustc_has_incoherent_inherent_impls = + attrs.by_key("rustc_has_incoherent_inherent_impls").exists(); let (items, attribute_calls, diagnostics) = match &tr_def.items { Some(items) => { let mut collector = AssocItemCollector::new( @@ -258,6 +267,7 @@ impl TraitData { is_unsafe, visibility, skip_array_during_method_dispatch, + rustc_has_incoherent_inherent_impls, }), diagnostics.into(), ) @@ -339,6 +349,10 @@ impl ImplData { pub struct Macro2Data { pub name: Name, pub visibility: RawVisibility, + // It's a bit wasteful as currently this is only for builtin `Default` derive macro, but macro2 + // are rarely used in practice so I think it's okay for now. + /// Derive helpers, if this is a derive rustc_builtin_macro + pub helpers: Option>, } impl Macro2Data { @@ -347,9 +361,18 @@ impl Macro2Data { let item_tree = loc.id.item_tree(db); let makro = &item_tree[loc.id.value]; + let helpers = item_tree + .attrs(db, loc.container.krate(), ModItem::from(loc.id.value).into()) + .by_key("rustc_builtin_macro") + .tt_values() + .next() + .and_then(|attr| parse_macro_name_and_helper_attrs(&attr.token_trees)) + .map(|(_, helpers)| helpers); + Arc::new(Macro2Data { name: makro.name.clone(), visibility: item_tree[makro.visibility].clone(), + helpers, }) } } @@ -519,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(), )); @@ -528,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( @@ -595,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/src/tools/rust-analyzer/crates/hir-def/src/expr.rs b/src/tools/rust-analyzer/crates/hir-def/src/expr.rs index 162646550207..7b6569421195 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/expr.rs +++ b/src/tools/rust-analyzer/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, @@ -137,6 +144,9 @@ pub enum Expr { Yield { expr: Option, }, + Yeet { + expr: Option, + }, RecordLit { path: Option>, fields: Box<[RecordLitField]>, @@ -313,7 +323,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/src/tools/rust-analyzer/crates/hir-def/src/find_path.rs b/src/tools/rust-analyzer/crates/hir-def/src/find_path.rs index c70e6fdccdcd..ddd7ad99e9ad 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/find_path.rs +++ b/src/tools/rust-analyzer/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; } @@ -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; } } @@ -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 { @@ -512,7 +531,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 +550,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( @@ -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#" diff --git a/src/tools/rust-analyzer/crates/hir-def/src/generics.rs b/src/tools/rust-analyzer/crates/hir-def/src/generics.rs index 469b28c2d9ed..f74559f5d663 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/generics.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/import_map.rs b/src/tools/rust-analyzer/crates/hir-def/src/import_map.rs index 688055e430bd..1ce191942ec0 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/import_map.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/import_map.rs @@ -239,7 +239,7 @@ impl fmt::Debug for ImportMap { ItemInNs::Values(_) => "v", ItemInNs::Macros(_) => "m", }; - format!("- {} ({})", info.path, ns) + format!("- {} ({ns})", info.path) }) .collect(); @@ -389,12 +389,12 @@ 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 { - 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<_> = @@ -545,7 +545,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 } @@ -585,7 +585,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/src/tools/rust-analyzer/crates/hir-def/src/item_scope.rs b/src/tools/rust-analyzer/crates/hir-def/src/item_scope.rs index 7721221c4447..c7b213b7e981 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/item_scope.rs +++ b/src/tools/rust-analyzer/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() @@ -159,18 +159,17 @@ 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 { + pub(crate) fn traits(&self) -> impl Iterator + '_ { self.types .values() .filter_map(|&(def, _)| match def { @@ -327,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/src/tools/rust-analyzer/crates/hir-def/src/item_tree.rs b/src/tools/rust-analyzer/crates/hir-def/src/item_tree.rs index 0aa531eff71f..80297f8adf16 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/item_tree.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/layout.rs b/src/tools/rust-analyzer/crates/hir-def/src/layout.rs new file mode 100644 index 000000000000..6bb4cd94f8a0 --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-def/src/layout.rs @@ -0,0 +1,96 @@ +//! Definitions needed for computing data layout of types. + +use std::cmp; + +use la_arena::{Idx, RawIdx}; +pub use rustc_abi::{ + Abi, AbiAndPrefAlign, AddressSpace, Align, Endian, FieldsShape, Integer, IntegerType, + LayoutCalculator, Niche, Primitive, ReprFlags, ReprOptions, Scalar, Size, StructKind, + TargetDataLayout, TargetDataLayoutErrors, WrappingRange, +}; + +use crate::LocalEnumVariantId; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct RustcEnumVariantIdx(pub LocalEnumVariantId); + +impl rustc_index::vec::Idx for RustcEnumVariantIdx { + fn new(idx: usize) -> Self { + RustcEnumVariantIdx(Idx::from_raw(RawIdx::from(idx as u32))) + } + + fn index(self) -> usize { + u32::from(self.0.into_raw()) as usize + } +} + +pub type Layout = rustc_abi::LayoutS; +pub type TagEncoding = rustc_abi::TagEncoding; +pub type Variants = rustc_abi::Variants; + +pub trait IntegerExt { + fn repr_discr( + dl: &TargetDataLayout, + repr: &ReprOptions, + min: i128, + max: i128, + ) -> Result<(Integer, bool), LayoutError>; +} + +impl IntegerExt for Integer { + /// Finds the appropriate Integer type and signedness for the given + /// signed discriminant range and `#[repr]` attribute. + /// N.B.: `u128` values above `i128::MAX` will be treated as signed, but + /// that shouldn't affect anything, other than maybe debuginfo. + fn repr_discr( + dl: &TargetDataLayout, + repr: &ReprOptions, + min: i128, + max: i128, + ) -> Result<(Integer, bool), LayoutError> { + // Theoretically, negative values could be larger in unsigned representation + // than the unsigned representation of the signed minimum. However, if there + // are any negative values, the only valid unsigned representation is u128 + // which can fit all i128 values, so the result remains unaffected. + let unsigned_fit = Integer::fit_unsigned(cmp::max(min as u128, max as u128)); + let signed_fit = cmp::max(Integer::fit_signed(min), Integer::fit_signed(max)); + + if let Some(ity) = repr.int { + let discr = Integer::from_attr(dl, ity); + let fit = if ity.is_signed() { signed_fit } else { unsigned_fit }; + if discr < fit { + return Err(LayoutError::UserError( + "Integer::repr_discr: `#[repr]` hint too small for \ + discriminant range of enum " + .to_string(), + )); + } + return Ok((discr, ity.is_signed())); + } + + let at_least = if repr.c() { + // This is usually I32, however it can be different on some platforms, + // notably hexagon and arm-none/thumb-none + dl.c_enum_min_size + } else { + // repr(Rust) enums try to be as small as possible + Integer::I8 + }; + + // If there are no negative values, we can use the unsigned fit. + Ok(if min >= 0 { + (cmp::max(unsigned_fit, at_least), false) + } else { + (cmp::max(signed_fit, at_least), true) + }) + } +} + +#[derive(Debug, PartialEq, Eq, Clone)] +pub enum LayoutError { + UserError(String), + SizeOverflow, + HasPlaceholder, + NotImplemented, + Unknown, +} diff --git a/src/tools/rust-analyzer/crates/hir-def/src/lib.rs b/src/tools/rust-analyzer/crates/hir-def/src/lib.rs index 5c7aa72349f6..8267ef09cb0a 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/lib.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/lib.rs @@ -34,6 +34,7 @@ pub mod adt; pub mod data; pub mod generics; pub mod lang_item; +pub mod layout; pub mod expr; pub mod body; diff --git a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests.rs index 81b9c5c4bfaf..79c85d118316 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests.rs +++ b/src/tools/rust-analyzer/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); @@ -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/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs index c04cd1651926..bb45266725c6 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe.rs index 457e43925c63..2d5f2a692e5d 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs index fc90c6e9f370..26f16542cbb2 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs @@ -136,3 +136,52 @@ macro_rules! m { ($($i:ident)? $vis:vis) => () } "#]], ) } + +// For this test and the one below, see rust-lang/rust#86730. +#[test] +fn expr_dont_match_let_expr() { + check( + r#" +macro_rules! foo { + ($e:expr) => { $e } +} + +fn test() { + foo!(let a = 3); +} +"#, + expect![[r#" +macro_rules! foo { + ($e:expr) => { $e } +} + +fn test() { + /* error: no rule matches input tokens */missing; +} +"#]], + ); +} + +#[test] +fn expr_dont_match_inline_const() { + check( + r#" +macro_rules! foo { + ($e:expr) => { $e } +} + +fn test() { + foo!(const { 3 }); +} +"#, + expect![[r#" +macro_rules! foo { + ($e:expr) => { $e } +} + +fn test() { + /* error: no rule matches input tokens */missing; +} +"#]], + ); +} 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/hir-def/src/nameres.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres.rs index 9b4ce9f97c86..f42b0079d769 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres.rs @@ -457,7 +457,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/src/tools/rust-analyzer/crates/hir-def/src/nameres/collector.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/collector.rs index b0dd01f9dbea..160203b77834 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/collector.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres/collector.rs @@ -40,7 +40,7 @@ use crate::{ diagnostics::DefDiagnostic, mod_resolution::ModDir, path_resolution::ReachedFixedPoint, - proc_macro::{ProcMacroDef, ProcMacroKind}, + proc_macro::{parse_macro_name_and_helper_attrs, ProcMacroDef, ProcMacroKind}, BuiltinShadowMode, DefMap, ModuleData, ModuleOrigin, ResolveMode, }, path::{ImportAlias, ModPath, PathKind}, @@ -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); @@ -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 { @@ -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 { @@ -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); @@ -2005,6 +2005,7 @@ impl ModCollector<'_, '_> { let ast_id = InFile::new(self.file_id(), mac.ast_id.upcast()); // Case 1: builtin macros + let mut helpers_opt = None; let attrs = self.item_tree.attrs(self.def_collector.db, krate, ModItem::from(id).into()); let expander = if attrs.by_key("rustc_builtin_macro").exists() { if let Some(expander) = find_builtin_macro(&mac.name) { @@ -2013,6 +2014,25 @@ impl ModCollector<'_, '_> { Either::Right(it) => MacroExpander::BuiltInEager(it), } } else if let Some(expander) = find_builtin_derive(&mac.name) { + if let Some(attr) = attrs.by_key("rustc_builtin_macro").tt_values().next() { + // NOTE: The item *may* have both `#[rustc_builtin_macro]` and `#[proc_macro_derive]`, + // in which case rustc ignores the helper attributes from the latter, but it + // "doesn't make sense in practice" (see rust-lang/rust#87027). + if let Some((name, helpers)) = + parse_macro_name_and_helper_attrs(&attr.token_trees) + { + // NOTE: rustc overrides the name if the macro name if it's different from the + // macro name, but we assume it isn't as there's no such case yet. FIXME if + // the following assertion fails. + stdx::always!( + name == mac.name, + "built-in macro {} has #[rustc_builtin_macro] which declares different name {}", + mac.name, + name + ); + helpers_opt = Some(helpers); + } + } MacroExpander::BuiltInDerive(expander) } else if let Some(expander) = find_builtin_attr(&mac.name) { MacroExpander::BuiltInAttr(expander) @@ -2037,6 +2057,12 @@ impl ModCollector<'_, '_> { macro_id, &self.item_tree[mac.visibility], ); + if let Some(helpers) = helpers_opt { + self.def_collector + .def_map + .exported_derives + .insert(macro_id_to_def_id(self.def_collector.db, macro_id.into()), helpers); + } } fn collect_macro_call(&mut self, mac: &MacroCall, container: ItemContainerId) { @@ -2059,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/src/tools/rust-analyzer/crates/hir-def/src/nameres/mod_resolution.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/mod_resolution.rs index ca7bcc814e8f..4c263846d27d 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/mod_resolution.rs +++ b/src/tools/rust-analyzer/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) => { @@ -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/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs index 20d39ec6cb92..1d9d5cccded2 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs +++ b/src/tools/rust-analyzer/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(); @@ -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/src/tools/rust-analyzer/crates/hir-def/src/nameres/proc_macro.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/proc_macro.rs index 52b79cd0fdda..06b23392cfe4 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/proc_macro.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres/proc_macro.rs @@ -37,45 +37,53 @@ impl Attrs { Some(ProcMacroDef { name: func_name.clone(), kind: ProcMacroKind::Attr }) } else if self.by_key("proc_macro_derive").exists() { let derive = self.by_key("proc_macro_derive").tt_values().next()?; + let def = parse_macro_name_and_helper_attrs(&derive.token_trees) + .map(|(name, helpers)| ProcMacroDef { name, kind: ProcMacroKind::CustomDerive { helpers } }); - match &*derive.token_trees { - // `#[proc_macro_derive(Trait)]` - [TokenTree::Leaf(Leaf::Ident(trait_name))] => Some(ProcMacroDef { - name: trait_name.as_name(), - kind: ProcMacroKind::CustomDerive { helpers: Box::new([]) }, - }), - - // `#[proc_macro_derive(Trait, attributes(helper1, helper2, ...))]` - [ - TokenTree::Leaf(Leaf::Ident(trait_name)), - TokenTree::Leaf(Leaf::Punct(comma)), - TokenTree::Leaf(Leaf::Ident(attributes)), - TokenTree::Subtree(helpers) - ] if comma.char == ',' && attributes.text == "attributes" => - { - let helpers = helpers.token_trees.iter() - .filter(|tt| !matches!(tt, TokenTree::Leaf(Leaf::Punct(comma)) if comma.char == ',')) - .map(|tt| { - match tt { - TokenTree::Leaf(Leaf::Ident(helper)) => Some(helper.as_name()), - _ => None - } - }) - .collect::>>()?; - - Some(ProcMacroDef { - name: trait_name.as_name(), - kind: ProcMacroKind::CustomDerive { helpers }, - }) - } - - _ => { - tracing::trace!("malformed `#[proc_macro_derive]`: {}", derive); - None - } + if def.is_none() { + tracing::trace!("malformed `#[proc_macro_derive]`: {}", derive); } + + def } else { None } } } + +// This fn is intended for `#[proc_macro_derive(..)]` and `#[rustc_builtin_macro(..)]`, which have +// the same strucuture. +#[rustfmt::skip] +pub(crate) fn parse_macro_name_and_helper_attrs(tt: &[TokenTree]) -> Option<(Name, Box<[Name]>)> { + match tt { + // `#[proc_macro_derive(Trait)]` + // `#[rustc_builtin_macro(Trait)]` + [TokenTree::Leaf(Leaf::Ident(trait_name))] => Some((trait_name.as_name(), Box::new([]))), + + // `#[proc_macro_derive(Trait, attributes(helper1, helper2, ...))]` + // `#[rustc_builtin_macro(Trait, attributes(helper1, helper2, ...))]` + [ + TokenTree::Leaf(Leaf::Ident(trait_name)), + TokenTree::Leaf(Leaf::Punct(comma)), + TokenTree::Leaf(Leaf::Ident(attributes)), + TokenTree::Subtree(helpers) + ] if comma.char == ',' && attributes.text == "attributes" => + { + let helpers = helpers + .token_trees + .iter() + .filter( + |tt| !matches!(tt, TokenTree::Leaf(Leaf::Punct(comma)) if comma.char == ','), + ) + .map(|tt| match tt { + TokenTree::Leaf(Leaf::Ident(helper)) => Some(helper.as_name()), + _ => None, + }) + .collect::>>()?; + + Some((trait_name.as_name(), helpers)) + } + + _ => None, + } +} diff --git a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs index 2e8cb3621fce..f5190b76db05 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/macros.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/macros.rs index 3ece1379ad77..fe0ad4f3863c 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/macros.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/macros.rs @@ -822,6 +822,28 @@ fn derive() {} ); } +#[test] +fn resolves_derive_helper_rustc_builtin_macro() { + cov_mark::check!(resolved_derive_helper); + // This is NOT the correct usage of `default` helper attribute, but we don't resolve helper + // attributes on non mod items in hir nameres. + check( + r#" +//- minicore: derive, default +#[derive(Default)] +#[default] +enum E { + A, + B, +} +"#, + expect![[r#" + crate + E: t + "#]], + ); +} + #[test] fn unresolved_attr_with_cfg_attr_hang() { // Another regression test for https://github.com/rust-lang/rust-analyzer/issues/8905 diff --git a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/mod_resolution.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/mod_resolution.rs index c575bf7cac25..a01931288478 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/mod_resolution.rs +++ b/src/tools/rust-analyzer/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( diff --git a/src/tools/rust-analyzer/crates/hir-def/src/pretty.rs b/src/tools/rust-analyzer/crates/hir-def/src/pretty.rs index 933970d10e47..befd0c5ffa05 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/pretty.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs b/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs index 070f6837133a..1ef7f9577fe8 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-expand/src/builtin_attr_macro.rs b/src/tools/rust-analyzer/crates/hir-expand/src/builtin_attr_macro.rs index 0c886ac4da9d..58d192f9fe00 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/builtin_attr_macro.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-expand/src/builtin_fn_macro.rs b/src/tools/rust-analyzer/crates/hir-expand/src/builtin_fn_macro.rs index 7b19518e25a8..5522bdf3b3fe 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/builtin_fn_macro.rs +++ b/src/tools/rust-analyzer/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()), }; @@ -454,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())); } _ => { @@ -676,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)) diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/db.rs b/src/tools/rust-analyzer/crates/hir-expand/src/db.rs index 87e4db03984a..b28e60187def 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/db.rs +++ b/src/tools/rust-analyzer/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, @@ -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/src/tools/rust-analyzer/crates/hir-expand/src/eager.rs b/src/tools/rust-analyzer/crates/hir-expand/src/eager.rs index 5fd099aea7d6..a1474c44e6c6 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/eager.rs +++ b/src/tools/rust-analyzer/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:?}"); } } @@ -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/src/tools/rust-analyzer/crates/hir-expand/src/fixup.rs b/src/tools/rust-analyzer/crates/hir-expand/src/fixup.rs index a4abe75626e6..75d364d5f846 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/fixup.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-expand/src/hygiene.rs b/src/tools/rust-analyzer/crates/hir-expand/src/hygiene.rs index d60734372c0c..df1e20256ca3 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/hygiene.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs b/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs index 7352b003a491..bc5f9f3b8afd 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-expand/src/name.rs b/src/tools/rust-analyzer/crates/hir-expand/src/name.rs index 2679a1c36026..e8b3e312aab7 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/name.rs +++ b/src/tools/rust-analyzer/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()), } } @@ -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, @@ -419,6 +381,8 @@ pub mod known { shr, sub_assign, sub, + unsafe_cell, + va_list ); // self/Self cannot be used as an identifier diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/quote.rs b/src/tools/rust-analyzer/crates/hir-expand/src/quote.rs index e839e97bf02d..c0a7bc7ca881 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/quote.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/Cargo.toml b/src/tools/rust-analyzer/crates/hir-ty/Cargo.toml index a1d6835bfaed..ae837ac6dce8 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/Cargo.toml +++ b/src/tools/rust-analyzer/crates/hir-ty/Cargo.toml @@ -13,18 +13,20 @@ 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" 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.88.0", default-features = false } +chalk-ir = "0.88.0" +chalk-recursive = { version = "0.88.0", default-features = false } +chalk-derive = "0.88.0" la-arena = { version = "0.3.0", path = "../../lib/la-arena" } once_cell = "1.15.0" typed-arena = "2.0.1" +rustc_index = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_index", default-features = false } stdx = { path = "../stdx", version = "0.0.0" } hir-def = { path = "../hir-def", version = "0.0.0" } diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/autoderef.rs b/src/tools/rust-analyzer/crates/hir-ty/src/autoderef.rs index 78911d8dc077..cbcf8f74c556 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/autoderef.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/builder.rs b/src/tools/rust-analyzer/crates/hir-ty/src/builder.rs index 9ae752556d89..d5ef0c22dec8 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/builder.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/chalk_db.rs b/src/tools/rust-analyzer/crates/hir-ty/src/chalk_db.rs index 43c3451cab37..1c2b8de7f784 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/chalk_db.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/consteval.rs b/src/tools/rust-analyzer/crates/hir-ty/src/consteval.rs index 2c0c6e0b8394..8df70330fa9e 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/consteval.rs +++ b/src/tools/rust-analyzer/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) } @@ -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, } @@ -351,15 +351,17 @@ pub fn eval_const( .infer .assoc_resolutions_for_expr(expr_id) .ok_or(ConstEvalError::SemanticError("unresolved assoc item"))? + .0 { hir_def::AssocItemId::FunctionId(_) => { Err(ConstEvalError::NotSupported("assoc function")) } + // FIXME use actual impl for trait assoc const hir_def::AssocItemId::ConstId(c) => ctx.db.const_eval(c), hir_def::AssocItemId::TypeAliasId(_) => { Err(ConstEvalError::NotSupported("assoc type alias")) } - } + }; } }; match pr { @@ -402,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(); @@ -509,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/src/tools/rust-analyzer/crates/hir-ty/src/consteval/tests.rs b/src/tools/rust-analyzer/crates/hir-ty/src/consteval/tests.rs index b76506f6ebc2..3c930c077b3b 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/consteval/tests.rs +++ b/src/tools/rust-analyzer/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:?}"), } } @@ -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" { @@ -126,7 +125,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/src/tools/rust-analyzer/crates/hir-ty/src/db.rs b/src/tools/rust-analyzer/crates/hir-ty/src/db.rs index 932fce83563d..54b244620fba 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/db.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/db.rs @@ -3,20 +3,23 @@ use std::sync::Arc; -use arrayvec::ArrayVec; use base_db::{impl_intern_key, salsa, CrateId, Upcast}; use hir_def::{ - db::DefDatabase, expr::ExprId, BlockId, ConstId, ConstParamId, DefWithBodyId, EnumVariantId, - FunctionId, GenericDefId, ImplId, LifetimeParamId, LocalFieldId, TypeOrConstParamId, VariantId, + db::DefDatabase, + expr::ExprId, + layout::{Layout, LayoutError, TargetDataLayout}, + AdtId, BlockId, ConstId, ConstParamId, DefWithBodyId, EnumVariantId, FunctionId, GenericDefId, + ImplId, LifetimeParamId, LocalFieldId, TypeOrConstParamId, VariantId, }; use la_arena::ArenaMap; +use smallvec::SmallVec; use crate::{ chalk_db, consteval::{ComputedExpr, ConstEvalError}, method_resolution::{InherentImpls, TraitImpls, TyFingerprint}, Binders, CallableDefId, FnDefId, GenericArg, ImplTraitId, InferenceResult, Interner, PolyFnSig, - QuantifiedWhereClause, ReturnTypeImplTraits, TraitRef, Ty, TyDefId, ValueTyDefId, + QuantifiedWhereClause, ReturnTypeImplTraits, Substitution, TraitRef, Ty, TyDefId, ValueTyDefId, }; use hir_expand::name::Name; @@ -57,6 +60,13 @@ pub trait HirDatabase: DefDatabase + Upcast { #[salsa::invoke(crate::lower::field_types_query)] fn field_types(&self, var: VariantId) -> Arc>>; + #[salsa::invoke(crate::layout::layout_of_adt_query)] + #[salsa::cycle(crate::layout::layout_of_adt_recover)] + fn layout_of_adt(&self, def: AdtId, subst: Substitution) -> Result; + + #[salsa::invoke(crate::layout::target_data_layout_query)] + fn target_data_layout(&self, krate: CrateId) -> Arc; + #[salsa::invoke(crate::lower::callable_item_sig)] fn callable_item_signature(&self, def: CallableDefId) -> PolyFnSig; @@ -92,10 +102,15 @@ pub trait HirDatabase: DefDatabase + Upcast { fn inherent_impls_in_block(&self, block: BlockId) -> Option>; /// Collects all crates in the dependency graph that have impls for the - /// given fingerprint. This is only used for primitive types; for - /// user-defined types we just look at the crate where the type is defined. - #[salsa::invoke(crate::method_resolution::inherent_impl_crates_query)] - fn inherent_impl_crates(&self, krate: CrateId, fp: TyFingerprint) -> ArrayVec; + /// given fingerprint. This is only used for primitive types and types + /// annotated with `rustc_has_incoherent_inherent_impls`; for other types + /// we just look at the crate where the type is defined. + #[salsa::invoke(crate::method_resolution::incoherent_inherent_impl_crates)] + fn incoherent_inherent_impl_crates( + &self, + krate: CrateId, + fp: TyFingerprint, + ) -> SmallVec<[CrateId; 2]>; #[salsa::invoke(TraitImpls::trait_impls_in_crate_query)] fn trait_impls_in_crate(&self, krate: CrateId) -> Arc; diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check.rs b/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check.rs index d51ad72bd27b..8b0f051b46b6 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check.rs @@ -12,16 +12,16 @@ pub(crate) mod usefulness; use chalk_ir::Mutability; use hir_def::{ - adt::VariantData, body::Body, expr::PatId, AdtId, EnumVariantId, HasModule, LocalFieldId, - VariantId, + adt::VariantData, body::Body, expr::PatId, AdtId, EnumVariantId, LocalFieldId, VariantId, }; -use hir_expand::name::{name, Name}; +use hir_expand::name::Name; use stdx::{always, never}; use crate::{ db::HirDatabase, display::{HirDisplay, HirDisplayError, HirFormatter}, infer::BindingMode, + lang_items::is_box, InferenceResult, Interner, Substitution, Ty, TyExt, TyKind, }; @@ -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(), " | "), } } @@ -405,13 +405,6 @@ where } } -fn is_box(adt: AdtId, db: &dyn HirDatabase) -> bool { - let owned_box = name![owned_box].to_smol_str(); - let krate = adt.module(db.upcast()).krate(); - let box_adt = db.lang_item(krate, owned_box).and_then(|it| it.as_struct()).map(AdtId::from); - Some(adt) == box_adt -} - pub(crate) trait PatternFoldable: Sized { fn fold_with(&self, folder: &mut F) -> Self { self.super_fold_with(folder) diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs b/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs index 47d60fc41e70..d130827a77e8 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/display.rs b/src/tools/rust-analyzer/crates/hir-ty/src/display.rs index a22a4b170f61..66e813eed8b4 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/display.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/display.rs @@ -16,7 +16,7 @@ use hir_def::{ path::{Path, PathKind}, type_ref::{ConstScalar, TraitBoundModifier, TypeBound, TypeRef}, visibility::Visibility, - HasModule, ItemContainerId, Lookup, ModuleId, TraitId, + HasModule, ItemContainerId, Lookup, ModuleDefId, ModuleId, TraitId, }; use hir_expand::{hygiene::Hygiene, name::Name}; use itertools::Itertools; @@ -35,9 +35,27 @@ use crate::{ TraitRefExt, Ty, TyExt, TyKind, WhereClause, }; +pub trait HirWrite: fmt::Write { + fn start_location_link(&mut self, location: ModuleDefId); + fn end_location_link(&mut self); +} + +// String will ignore link metadata +impl HirWrite for String { + fn start_location_link(&mut self, _: ModuleDefId) {} + + fn end_location_link(&mut self) {} +} + +// `core::Formatter` will ignore metadata +impl HirWrite for fmt::Formatter<'_> { + fn start_location_link(&mut self, _: ModuleDefId) {} + fn end_location_link(&mut self) {} +} + pub struct HirFormatter<'a> { pub db: &'a dyn HirDatabase, - fmt: &'a mut dyn fmt::Write, + fmt: &'a mut dyn HirWrite, buf: String, curr_size: usize, pub(crate) max_size: Option, @@ -45,6 +63,16 @@ pub struct HirFormatter<'a> { display_target: DisplayTarget, } +impl HirFormatter<'_> { + fn start_location_link(&mut self, location: ModuleDefId) { + self.fmt.start_location_link(location); + } + + fn end_location_link(&mut self) { + self.fmt.end_location_link(); + } +} + pub trait HirDisplay { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError>; @@ -148,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)?; @@ -245,12 +273,9 @@ pub struct HirDisplayWrapper<'a, T> { display_target: DisplayTarget, } -impl<'a, T> fmt::Display for HirDisplayWrapper<'a, T> -where - T: HirDisplay, -{ - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self.t.hir_fmt(&mut HirFormatter { +impl HirDisplayWrapper<'_, T> { + pub fn write_to(&self, f: &mut F) -> Result<(), HirDisplayError> { + self.t.hir_fmt(&mut HirFormatter { db: self.db, fmt: f, buf: String::with_capacity(20), @@ -258,7 +283,16 @@ where max_size: self.max_size, omit_verbose_types: self.omit_verbose_types, display_target: self.display_target, - }) { + }) + } +} + +impl<'a, T> fmt::Display for HirDisplayWrapper<'a, T> +where + T: HirDisplay, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self.write_to(f) { Ok(()) => Ok(()), Err(HirDisplayError::FmtError) => Err(fmt::Error), Err(HirDisplayError::DisplaySourceCodeError(_)) => { @@ -286,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); @@ -308,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) @@ -351,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) { @@ -530,6 +564,7 @@ impl HirDisplay for Ty { } } TyKind::Adt(AdtId(def_id), parameters) => { + f.start_location_link((*def_id).into()); match f.display_target { DisplayTarget::Diagnostics | DisplayTarget::Test => { let name = match *def_id { @@ -537,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( @@ -546,7 +581,7 @@ impl HirDisplay for Ty { module_id, false, ) { - write!(f, "{}", path)?; + write!(f, "{path}")?; } else { return Err(HirDisplayError::DisplaySourceCodeError( DisplaySourceCodeError::PathNotFound, @@ -554,6 +589,7 @@ impl HirDisplay for Ty { } } } + f.end_location_link(); if parameters.len(Interner) > 0 { let parameters_to_write = if f.display_target.is_source_code() @@ -701,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(), ", ")?; @@ -892,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 { .. }) { @@ -1020,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)?; @@ -1047,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 { @@ -1098,7 +1134,6 @@ impl HirDisplay for LifetimeData { write!(f, "{}", param_data.name) } LifetimeData::Static => write!(f, "'static"), - LifetimeData::Empty(_) => Ok(()), LifetimeData::Erased => Ok(()), LifetimeData::Phantom(_, _) => Ok(()), } @@ -1162,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) => { @@ -1174,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, "[")?; @@ -1197,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)?; @@ -1373,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/src/tools/rust-analyzer/crates/hir-ty/src/infer.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer.rs index 0b3c23f5747a..6b59f1c20daa 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/infer.rs @@ -19,10 +19,11 @@ use std::sync::Arc; use chalk_ir::{cast::Cast, ConstValue, DebruijnIndex, Mutability, Safety, Scalar, TypeFlags}; use hir_def::{ body::Body, - builtin_type::BuiltinType, + 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}, resolver::{HasResolver, ResolveValueResult, Resolver, TypeNs, ValueNs}, type_ref::TypeRef, @@ -33,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, @@ -70,8 +71,26 @@ pub(crate) fn infer_query(db: &dyn HirDatabase, def: DefWithBodyId) -> Arc ctx.collect_static(&db.static_data(s)), DefWithBodyId::VariantId(v) => { ctx.return_ty = TyBuilder::builtin(match db.enum_data(v.parent).variant_body_type() { - Either::Left(builtin) => BuiltinType::Int(builtin), - Either::Right(builtin) => BuiltinType::Uint(builtin), + hir_def::layout::IntegerType::Pointer(signed) => match signed { + true => BuiltinType::Int(BuiltinInt::Isize), + false => BuiltinType::Uint(BuiltinUint::Usize), + }, + hir_def::layout::IntegerType::Fixed(size, signed) => match signed { + true => BuiltinType::Int(match size { + Integer::I8 => BuiltinInt::I8, + Integer::I16 => BuiltinInt::I16, + Integer::I32 => BuiltinInt::I32, + Integer::I64 => BuiltinInt::I64, + Integer::I128 => BuiltinInt::I128, + }), + false => BuiltinType::Uint(match size { + Integer::I8 => BuiltinUint::U8, + Integer::I16 => BuiltinUint::U16, + Integer::I32 => BuiltinUint::U32, + Integer::I64 => BuiltinUint::U64, + Integer::I128 => BuiltinUint::U128, + }), + }, }); } } @@ -101,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)] @@ -189,6 +201,8 @@ pub(crate) type InferResult = Result, TypeError>; #[derive(Debug, PartialEq, Eq, Clone)] 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 }, } @@ -330,7 +344,7 @@ pub struct InferenceResult { /// For each struct literal or pattern, records the variant it resolves to. variant_resolutions: FxHashMap, /// For each associated item record what it resolves to - assoc_resolutions: FxHashMap, + assoc_resolutions: FxHashMap, pub diagnostics: Vec, pub type_of_expr: ArenaMap, /// For each pattern record the type it resolves to. @@ -360,11 +374,11 @@ impl InferenceResult { pub fn variant_resolution_for_pat(&self, id: PatId) -> Option { self.variant_resolutions.get(&id.into()).copied() } - pub fn assoc_resolutions_for_expr(&self, id: ExprId) -> Option { - self.assoc_resolutions.get(&id.into()).copied() + pub fn assoc_resolutions_for_expr(&self, id: ExprId) -> Option<(AssocItemId, Substitution)> { + self.assoc_resolutions.get(&id.into()).cloned() } - pub fn assoc_resolutions_for_pat(&self, id: PatId) -> Option { - self.assoc_resolutions.get(&id.into()).copied() + pub fn assoc_resolutions_for_pat(&self, id: PatId) -> Option<(AssocItemId, Substitution)> { + self.assoc_resolutions.get(&id.into()).cloned() } pub fn type_mismatch_for_expr(&self, expr: ExprId) -> Option<&TypeMismatch> { self.type_mismatches.get(&expr.into()) @@ -484,7 +498,7 @@ impl<'a> InferenceContext<'a> { result: InferenceResult::default(), table: unify::InferenceTable::new(db, trait_env.clone()), trait_env, - return_ty: TyKind::Error.intern(Interner), // set in collect_fn_signature + return_ty: TyKind::Error.intern(Interner), // set in collect_* calls resume_yield_tys: None, db, owner, @@ -498,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(); @@ -516,6 +532,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()); } @@ -537,8 +556,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); @@ -551,14 +582,17 @@ impl<'a> InferenceContext<'a> { } else { &*data.ret_type }; - let return_ty = self.make_ty_with_mode(return_ty, ImplTraitLoweringMode::Opaque); - self.return_ty = return_ty; - if let Some(rpits) = self.db.return_type_impl_traits(func) { + let ctx = crate::lower::TyLoweringContext::new(self.db, &self.resolver) + .with_impl_trait_mode(ImplTraitLoweringMode::Opaque); + let return_ty = ctx.lower_ty(return_ty); + let return_ty = self.insert_type_vars(return_ty); + + let return_ty = if let Some(rpits) = self.db.return_type_impl_traits(func) { // RPIT opaque types use substitution of their parent function. let fn_placeholders = TyBuilder::placeholder_subst(self.db, func); - self.return_ty = fold_tys( - self.return_ty.clone(), + fold_tys( + return_ty, |ty, _| { let opaque_ty_id = match ty.kind(Interner) { TyKind::OpaqueType(opaque_ty_id, _) => *opaque_ty_id, @@ -579,14 +613,18 @@ impl<'a> InferenceContext<'a> { let (var_predicate, binders) = predicate .substitute(Interner, &var_subst) .into_value_and_skipped_binders(); - always!(binders.len(Interner) == 0); // quantified where clauses not yet handled + always!(binders.is_empty(Interner)); // quantified where clauses not yet handled self.push_obligation(var_predicate.cast(Interner)); } var }, DebruijnIndex::INNERMOST, - ); - } + ) + } else { + return_ty + }; + + self.return_ty = self.normalize_associated_types_in(return_ty); } fn infer_body(&mut self) { @@ -609,8 +647,8 @@ impl<'a> InferenceContext<'a> { self.result.variant_resolutions.insert(id, variant); } - fn write_assoc_resolution(&mut self, id: ExprOrPatId, item: AssocItemId) { - self.result.assoc_resolutions.insert(id, item); + fn write_assoc_resolution(&mut self, id: ExprOrPatId, item: AssocItemId, subs: Substitution) { + self.result.assoc_resolutions.insert(id, (item, subs)); } fn write_pat_ty(&mut self, pat: PatId, ty: Ty) { @@ -621,23 +659,14 @@ impl<'a> InferenceContext<'a> { self.result.diagnostics.push(diagnostic); } - fn make_ty_with_mode( - &mut self, - type_ref: &TypeRef, - impl_trait_mode: ImplTraitLoweringMode, - ) -> Ty { + fn make_ty(&mut self, type_ref: &TypeRef) -> Ty { // FIXME use right resolver for block - let ctx = crate::lower::TyLoweringContext::new(self.db, &self.resolver) - .with_impl_trait_mode(impl_trait_mode); + let ctx = crate::lower::TyLoweringContext::new(self.db, &self.resolver); let ty = ctx.lower_ty(type_ref); let ty = self.insert_type_vars(ty); self.normalize_associated_types_in(ty) } - fn make_ty(&mut self, type_ref: &TypeRef) -> Ty { - self.make_ty_with_mode(type_ref, ImplTraitLoweringMode::Disallowed) - } - fn err_ty(&self) -> Ty { self.result.standard_types.unknown.clone() } @@ -656,7 +685,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(), @@ -983,6 +1012,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/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs index b1f4de826077..8f9cdac3784c 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs @@ -1,13 +1,12 @@ //! Type inference for expressions. use std::{ - collections::hash_map::Entry, iter::{repeat, repeat_with}, mem, }; use chalk_ir::{ - cast::Cast, fold::Shift, DebruijnIndex, GenericArgData, Mutability, TyVariableKind, + cast::Cast, fold::Shift, DebruijnIndex, GenericArgData, Mutability, TyKind, TyVariableKind, }; use hir_def::{ expr::{ @@ -35,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::{ @@ -152,11 +151,20 @@ impl<'a> InferenceContext<'a> { .1 } Expr::TryBlock { body } => { - self.with_breakable_ctx(BreakableKind::Border, 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(); @@ -326,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 } @@ -465,6 +474,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 { @@ -506,6 +521,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) => { @@ -532,13 +548,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; } @@ -557,7 +568,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 } @@ -940,7 +961,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(), _ => { @@ -1018,14 +1039,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); @@ -1122,20 +1167,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 => ( @@ -1309,7 +1360,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/src/tools/rust-analyzer/crates/hir-ty/src/infer/pat.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer/pat.rs index 53259d66dec6..f154dac8e879 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer/pat.rs +++ b/src/tools/rust-analyzer/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()); @@ -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/src/tools/rust-analyzer/crates/hir-ty/src/infer/path.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer/path.rs index ebe9d6fb5e01..8bd17c0f39f4 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer/path.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/infer/path.rs @@ -7,13 +7,15 @@ use hir_def::{ AdtId, AssocItemId, EnumVariantId, ItemContainerId, Lookup, }; use hir_expand::name::Name; +use stdx::never; use crate::{ builder::ParamKind, 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}; @@ -212,7 +214,7 @@ impl<'a> InferenceContext<'a> { AssocItemId::TypeAliasId(_) => unreachable!(), }; - self.write_assoc_resolution(id, item); + self.write_assoc_resolution(id, item, trait_ref.substitution.clone()); Some((def, Some(trait_ref.substitution))) } @@ -233,7 +235,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(), @@ -241,7 +244,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) @@ -259,7 +262,7 @@ impl<'a> InferenceContext<'a> { let impl_self_ty = self.db.impl_self_ty(impl_id).substitute(Interner, &impl_substs); self.unify(&impl_self_ty, &ty); - Some(impl_substs) + impl_substs } ItemContainerId::TraitId(trait_) => { // we're picking this method @@ -268,15 +271,32 @@ impl<'a> InferenceContext<'a> { .fill_with_inference_vars(&mut self.table) .build(); self.push_obligation(trait_ref.clone().cast(Interner)); - Some(trait_ref.substitution) + trait_ref.substitution + } + ItemContainerId::ModuleId(_) | ItemContainerId::ExternBlockId(_) => { + never!("assoc item contained in module/extern block"); + return None; } - ItemContainerId::ModuleId(_) | ItemContainerId::ExternBlockId(_) => None, }; - self.write_assoc_resolution(id, item); - Some((def, substs)) + if visible { + Some((def, item, Some(substs), true)) + } else { + if not_visible.is_none() { + not_visible = Some((def, item, Some(substs), false)); + } + None + } }, - ) + ); + let res = res.or(not_visible); + 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)) } fn resolve_enum_variant_on_ty( diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs index 12f45f00f9c4..e7ddd1591fe8 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs +++ b/src/tools/rust-analyzer/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,13 @@ 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; + const INTEGER = 1 << 1; + const FLOAT = 1 << 2; + } } type ChalkInferenceTable = chalk_solve::infer::InferenceTable; @@ -140,14 +144,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 +173,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 +193,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 +251,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 +260,15 @@ 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; + let flags = self.type_variable_table.get_mut(var.index() as usize).unwrap(); + if 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) } @@ -340,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/src/tools/rust-analyzer/crates/hir-ty/src/interner.rs b/src/tools/rust-analyzer/crates/hir-ty/src/interner.rs index ca76e08fddb9..441503a300e5 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/interner.rs +++ b/src/tools/rust-analyzer/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( @@ -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/src/tools/rust-analyzer/crates/hir-ty/src/lang_items.rs b/src/tools/rust-analyzer/crates/hir-ty/src/lang_items.rs new file mode 100644 index 000000000000..afc54e729f9c --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-ty/src/lang_items.rs @@ -0,0 +1,20 @@ +//! Functions to detect special lang items + +use hir_def::{AdtId, HasModule}; +use hir_expand::name; + +use crate::db::HirDatabase; + +pub fn is_box(adt: AdtId, db: &dyn HirDatabase) -> bool { + let owned_box = name![owned_box].to_smol_str(); + let krate = adt.module(db.upcast()).krate(); + let box_adt = db.lang_item(krate, owned_box).and_then(|it| it.as_struct()).map(AdtId::from); + Some(adt) == box_adt +} + +pub fn is_unsafe_cell(adt: AdtId, db: &dyn HirDatabase) -> bool { + let owned_box = name![unsafe_cell].to_smol_str(); + let krate = adt.module(db.upcast()).krate(); + let box_adt = db.lang_item(krate, owned_box).and_then(|it| it.as_struct()).map(AdtId::from); + Some(adt) == box_adt +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/layout.rs b/src/tools/rust-analyzer/crates/hir-ty/src/layout.rs new file mode 100644 index 000000000000..7a1cca3143ec --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-ty/src/layout.rs @@ -0,0 +1,279 @@ +//! Compute the binary representation of a type + +use std::sync::Arc; + +use base_db::CrateId; +use chalk_ir::{AdtId, TyKind}; +use hir_def::{ + layout::{ + Abi, FieldsShape, Integer, Layout, LayoutCalculator, LayoutError, Primitive, ReprOptions, + RustcEnumVariantIdx, Scalar, Size, StructKind, TargetDataLayout, Variants, WrappingRange, + }, + LocalFieldId, +}; +use stdx::never; + +use crate::{db::HirDatabase, Interner, Substitution, Ty}; + +use self::adt::struct_variant_idx; +pub use self::{ + adt::{layout_of_adt_query, layout_of_adt_recover}, + target::target_data_layout_query, +}; + +macro_rules! user_error { + ($x: expr) => { + return Err(LayoutError::UserError(format!($x))) + }; +} + +mod adt; +mod target; + +struct LayoutCx<'a> { + db: &'a dyn HirDatabase, + krate: CrateId, +} + +impl LayoutCalculator for LayoutCx<'_> { + type TargetDataLayoutRef = Arc; + + fn delay_bug(&self, txt: &str) { + never!("{}", txt); + } + + fn current_data_layout(&self) -> Arc { + self.db.target_data_layout(self.krate) + } +} + +fn scalar_unit(dl: &TargetDataLayout, value: Primitive) -> Scalar { + Scalar::Initialized { value, valid_range: WrappingRange::full(value.size(dl)) } +} + +fn scalar(dl: &TargetDataLayout, value: Primitive) -> Layout { + Layout::scalar(dl, scalar_unit(dl, value)) +} + +pub fn layout_of_ty(db: &dyn HirDatabase, ty: &Ty, krate: CrateId) -> Result { + let cx = LayoutCx { db, krate }; + let dl = &*cx.current_data_layout(); + Ok(match ty.kind(Interner) { + TyKind::Adt(AdtId(def), subst) => db.layout_of_adt(*def, subst.clone())?, + TyKind::Scalar(s) => match s { + chalk_ir::Scalar::Bool => Layout::scalar( + dl, + Scalar::Initialized { + value: Primitive::Int(Integer::I8, false), + valid_range: WrappingRange { start: 0, end: 1 }, + }, + ), + chalk_ir::Scalar::Char => Layout::scalar( + dl, + Scalar::Initialized { + value: Primitive::Int(Integer::I32, false), + valid_range: WrappingRange { start: 0, end: 0x10FFFF }, + }, + ), + chalk_ir::Scalar::Int(i) => scalar( + dl, + Primitive::Int( + match i { + chalk_ir::IntTy::Isize => dl.ptr_sized_integer(), + chalk_ir::IntTy::I8 => Integer::I8, + chalk_ir::IntTy::I16 => Integer::I16, + chalk_ir::IntTy::I32 => Integer::I32, + chalk_ir::IntTy::I64 => Integer::I64, + chalk_ir::IntTy::I128 => Integer::I128, + }, + true, + ), + ), + chalk_ir::Scalar::Uint(i) => scalar( + dl, + Primitive::Int( + match i { + chalk_ir::UintTy::Usize => dl.ptr_sized_integer(), + chalk_ir::UintTy::U8 => Integer::I8, + chalk_ir::UintTy::U16 => Integer::I16, + chalk_ir::UintTy::U32 => Integer::I32, + chalk_ir::UintTy::U64 => Integer::I64, + chalk_ir::UintTy::U128 => Integer::I128, + }, + false, + ), + ), + chalk_ir::Scalar::Float(f) => scalar( + dl, + match f { + chalk_ir::FloatTy::F32 => Primitive::F32, + chalk_ir::FloatTy::F64 => Primitive::F64, + }, + ), + }, + TyKind::Tuple(len, tys) => { + let kind = if *len == 0 { StructKind::AlwaysSized } else { StructKind::MaybeUnsized }; + + let fields = tys + .iter(Interner) + .map(|k| layout_of_ty(db, k.assert_ty_ref(Interner), krate)) + .collect::, _>>()?; + let fields = fields.iter().collect::>(); + let fields = fields.iter().collect::>(); + cx.univariant(dl, &fields, &ReprOptions::default(), kind).ok_or(LayoutError::Unknown)? + } + TyKind::Array(element, count) => { + let count = match count.data(Interner).value { + chalk_ir::ConstValue::Concrete(c) => match c.interned { + hir_def::type_ref::ConstScalar::Int(x) => x as u64, + hir_def::type_ref::ConstScalar::UInt(x) => x as u64, + hir_def::type_ref::ConstScalar::Unknown => { + user_error!("unknown const generic parameter") + } + _ => user_error!("mismatched type of const generic parameter"), + }, + _ => return Err(LayoutError::HasPlaceholder), + }; + let element = layout_of_ty(db, element, krate)?; + let size = element.size.checked_mul(count, dl).ok_or(LayoutError::SizeOverflow)?; + + let abi = if count != 0 && matches!(element.abi, Abi::Uninhabited) { + Abi::Uninhabited + } else { + Abi::Aggregate { sized: true } + }; + + let largest_niche = if count != 0 { element.largest_niche } else { None }; + + Layout { + variants: Variants::Single { index: struct_variant_idx() }, + fields: FieldsShape::Array { stride: element.size, count }, + abi, + largest_niche, + align: element.align, + size, + } + } + TyKind::Slice(element) => { + let element = layout_of_ty(db, element, krate)?; + Layout { + variants: Variants::Single { index: struct_variant_idx() }, + fields: FieldsShape::Array { stride: element.size, count: 0 }, + abi: Abi::Aggregate { sized: false }, + largest_niche: None, + align: element.align, + size: Size::ZERO, + } + } + // Potentially-wide pointers. + TyKind::Ref(_, _, pointee) | TyKind::Raw(_, pointee) => { + let mut data_ptr = scalar_unit(dl, Primitive::Pointer); + if matches!(ty.kind(Interner), TyKind::Ref(..)) { + data_ptr.valid_range_mut().start = 1; + } + + // let pointee = tcx.normalize_erasing_regions(param_env, pointee); + // if pointee.is_sized(tcx.at(DUMMY_SP), param_env) { + // return Ok(tcx.intern_layout(LayoutS::scalar(cx, data_ptr))); + // } + + let unsized_part = struct_tail_erasing_lifetimes(db, pointee.clone()); + let metadata = match unsized_part.kind(Interner) { + TyKind::Slice(_) | TyKind::Str => { + scalar_unit(dl, Primitive::Int(dl.ptr_sized_integer(), false)) + } + TyKind::Dyn(..) => { + let mut vtable = scalar_unit(dl, Primitive::Pointer); + vtable.valid_range_mut().start = 1; + vtable + } + _ => { + // pointee is sized + return Ok(Layout::scalar(dl, data_ptr)); + } + }; + + // Effectively a (ptr, meta) tuple. + cx.scalar_pair(data_ptr, metadata) + } + TyKind::FnDef(_, _) => layout_of_unit(&cx, dl)?, + TyKind::Str => Layout { + variants: Variants::Single { index: struct_variant_idx() }, + fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 }, + abi: Abi::Aggregate { sized: false }, + largest_niche: None, + align: dl.i8_align, + size: Size::ZERO, + }, + TyKind::Never => Layout { + variants: Variants::Single { index: struct_variant_idx() }, + fields: FieldsShape::Primitive, + abi: Abi::Uninhabited, + largest_niche: None, + align: dl.i8_align, + size: Size::ZERO, + }, + TyKind::Dyn(_) | TyKind::Foreign(_) => { + let mut unit = layout_of_unit(&cx, dl)?; + match unit.abi { + Abi::Aggregate { ref mut sized } => *sized = false, + _ => user_error!("bug"), + } + unit + } + TyKind::Function(_) => { + let mut ptr = scalar_unit(dl, Primitive::Pointer); + ptr.valid_range_mut().start = 1; + Layout::scalar(dl, ptr) + } + TyKind::Closure(_, _) + | TyKind::OpaqueType(_, _) + | TyKind::Generator(_, _) + | TyKind::GeneratorWitness(_, _) => return Err(LayoutError::NotImplemented), + TyKind::AssociatedType(_, _) + | TyKind::Error + | TyKind::Alias(_) + | TyKind::Placeholder(_) + | TyKind::BoundVar(_) + | TyKind::InferenceVar(_, _) => return Err(LayoutError::HasPlaceholder), + }) +} + +fn layout_of_unit(cx: &LayoutCx<'_>, dl: &TargetDataLayout) -> Result { + cx.univariant::( + dl, + &[], + &ReprOptions::default(), + StructKind::AlwaysSized, + ) + .ok_or(LayoutError::Unknown) +} + +fn struct_tail_erasing_lifetimes(db: &dyn HirDatabase, pointee: Ty) -> Ty { + match pointee.kind(Interner) { + TyKind::Adt(AdtId(adt), subst) => match adt { + &hir_def::AdtId::StructId(i) => { + let data = db.struct_data(i); + let mut it = data.variant_data.fields().iter().rev(); + match it.next() { + Some((f, _)) => field_ty(db, i.into(), f, subst), + None => pointee, + } + } + _ => pointee, + }, + _ => pointee, + } +} + +fn field_ty( + db: &dyn HirDatabase, + def: hir_def::VariantId, + fd: LocalFieldId, + subst: &Substitution, +) -> Ty { + db.field_types(def)[fd].clone().substitute(Interner, subst) +} + +#[cfg(test)] +mod tests; diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/layout/adt.rs b/src/tools/rust-analyzer/crates/hir-ty/src/layout/adt.rs new file mode 100644 index 000000000000..23166a5a5223 --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-ty/src/layout/adt.rs @@ -0,0 +1,134 @@ +//! Compute the binary representation of structs, unions and enums + +use std::ops::Bound; + +use hir_def::{ + adt::VariantData, + layout::{Integer, IntegerExt, Layout, LayoutCalculator, LayoutError, RustcEnumVariantIdx}, + AdtId, EnumVariantId, HasModule, LocalEnumVariantId, VariantId, +}; +use la_arena::RawIdx; +use smallvec::SmallVec; + +use crate::{db::HirDatabase, lang_items::is_unsafe_cell, layout::field_ty, Substitution}; + +use super::{layout_of_ty, LayoutCx}; + +pub(crate) fn struct_variant_idx() -> RustcEnumVariantIdx { + RustcEnumVariantIdx(LocalEnumVariantId::from_raw(RawIdx::from(0))) +} + +pub fn layout_of_adt_query( + db: &dyn HirDatabase, + def: AdtId, + subst: Substitution, +) -> Result { + let cx = LayoutCx { db, krate: def.module(db.upcast()).krate() }; + let dl = cx.current_data_layout(); + let handle_variant = |def: VariantId, var: &VariantData| { + var.fields() + .iter() + .map(|(fd, _)| layout_of_ty(db, &field_ty(db, def, fd, &subst), cx.krate)) + .collect::, _>>() + }; + let (variants, is_enum, is_union, repr) = match def { + AdtId::StructId(s) => { + let data = db.struct_data(s); + let mut r = SmallVec::<[_; 1]>::new(); + r.push(handle_variant(s.into(), &data.variant_data)?); + (r, false, false, data.repr.unwrap_or_default()) + } + AdtId::UnionId(id) => { + let data = db.union_data(id); + let mut r = SmallVec::new(); + r.push(handle_variant(id.into(), &data.variant_data)?); + (r, false, true, data.repr.unwrap_or_default()) + } + AdtId::EnumId(e) => { + let data = db.enum_data(e); + let r = data + .variants + .iter() + .map(|(idx, v)| { + handle_variant( + EnumVariantId { parent: e, local_id: idx }.into(), + &v.variant_data, + ) + }) + .collect::, _>>()?; + (r, true, false, data.repr.unwrap_or_default()) + } + }; + let variants = + variants.iter().map(|x| x.iter().collect::>()).collect::>(); + let variants = variants.iter().map(|x| x.iter().collect()).collect(); + if is_union { + cx.layout_of_union(&repr, &variants).ok_or(LayoutError::Unknown) + } else { + cx.layout_of_struct_or_enum( + &repr, + &variants, + is_enum, + is_unsafe_cell(def, db), + layout_scalar_valid_range(db, def), + |min, max| Integer::repr_discr(&dl, &repr, min, max).unwrap_or((Integer::I8, false)), + variants.iter_enumerated().filter_map(|(id, _)| { + let AdtId::EnumId(e) = def else { return None }; + let d = match db + .const_eval_variant(EnumVariantId { parent: e, local_id: id.0 }) + .ok()? + { + crate::consteval::ComputedExpr::Literal(l) => match l { + hir_def::expr::Literal::Int(i, _) => i, + hir_def::expr::Literal::Uint(i, _) => i as i128, + _ => return None, + }, + _ => return None, + }; + Some((id, d)) + }), + // FIXME: The current code for niche-filling relies on variant indices + // instead of actual discriminants, so enums with + // explicit discriminants (RFC #2363) would misbehave and we should disable + // niche optimization for them. + // The code that do it in rustc: + // repr.inhibit_enum_layout_opt() || def + // .variants() + // .iter_enumerated() + // .any(|(i, v)| v.discr != ty::VariantDiscr::Relative(i.as_u32())) + repr.inhibit_enum_layout_opt(), + !is_enum + && variants + .iter() + .next() + .and_then(|x| x.last().map(|x| x.is_unsized())) + .unwrap_or(true), + ) + .ok_or(LayoutError::SizeOverflow) + } +} + +fn layout_scalar_valid_range(db: &dyn HirDatabase, def: AdtId) -> (Bound, Bound) { + let attrs = db.attrs(def.into()); + let get = |name| { + let attr = attrs.by_key(name).tt_values(); + for tree in attr { + if let Some(x) = tree.token_trees.first() { + if let Ok(x) = x.to_string().parse() { + return Bound::Included(x); + } + } + } + Bound::Unbounded + }; + (get("rustc_layout_scalar_valid_range_start"), get("rustc_layout_scalar_valid_range_end")) +} + +pub fn layout_of_adt_recover( + _: &dyn HirDatabase, + _: &[String], + _: &AdtId, + _: &Substitution, +) -> Result { + user_error!("infinite sized recursive type"); +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/layout/target.rs b/src/tools/rust-analyzer/crates/hir-ty/src/layout/target.rs new file mode 100644 index 000000000000..37b831652f56 --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-ty/src/layout/target.rs @@ -0,0 +1,36 @@ +//! Target dependent parameters needed for layouts + +use std::sync::Arc; + +use base_db::CrateId; +use hir_def::layout::{Endian, Size, TargetDataLayout}; + +use crate::db::HirDatabase; + +pub fn target_data_layout_query(db: &dyn HirDatabase, krate: CrateId) -> Arc { + let crate_graph = db.crate_graph(); + let target_layout = &crate_graph[krate].target_layout; + let cfg_options = &crate_graph[krate].cfg_options; + Arc::new( + target_layout + .as_ref() + .and_then(|it| TargetDataLayout::parse_from_llvm_datalayout_string(it).ok()) + .unwrap_or_else(|| { + let endian = match cfg_options.get_cfg_values("target_endian").next() { + Some(x) if x.as_str() == "big" => Endian::Big, + _ => Endian::Little, + }; + let pointer_size = Size::from_bytes( + match cfg_options.get_cfg_values("target_pointer_width").next() { + Some(x) => match x.as_str() { + "16" => 2, + "32" => 4, + _ => 8, + }, + _ => 8, + }, + ); + TargetDataLayout { endian, pointer_size, ..TargetDataLayout::default() } + }), + ) +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/layout/tests.rs b/src/tools/rust-analyzer/crates/hir-ty/src/layout/tests.rs new file mode 100644 index 000000000000..53838cf41d27 --- /dev/null +++ b/src/tools/rust-analyzer/crates/hir-ty/src/layout/tests.rs @@ -0,0 +1,208 @@ +use base_db::fixture::WithFixture; +use chalk_ir::{AdtId, TyKind}; +use hir_def::{ + db::DefDatabase, + layout::{Layout, LayoutError}, +}; + +use crate::{test_db::TestDB, Interner, Substitution}; + +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"); + let output = cmd.output().unwrap(); + assert!(output.status.success(), "{}", output.status); + let stdout = String::from_utf8(output.stdout).unwrap(); + let target_data_layout = + stdout.split_once(r#""data-layout": ""#).unwrap().1.split_once('"').unwrap().0.to_owned(); + + let ra_fixture = format!( + "{minicore}//- /main.rs crate:test target_data_layout:{target_data_layout}\n{ra_fixture}", + ); + + let (db, file_id) = TestDB::with_single_file(&ra_fixture); + let module_id = db.module_for_file(file_id); + let def_map = module_id.def_map(&db); + let scope = &def_map[module_id.local_id].scope; + let adt_id = scope + .declarations() + .find_map(|x| match x { + hir_def::ModuleDefId::AdtId(x) => { + let name = match x { + hir_def::AdtId::StructId(x) => db.struct_data(x).name.to_smol_str(), + 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_some(x) + } + _ => None, + }) + .unwrap(); + let goal_ty = TyKind::Adt(AdtId(adt_id), Substitution::empty(Interner)).intern(Interner); + layout_of_ty(&db, &goal_ty, module_id.krate()) +} + +#[track_caller] +fn check_size_and_align(ra_fixture: &str, minicore: &str, size: u64, align: u64) { + let l = eval_goal(ra_fixture, minicore).unwrap(); + assert_eq!(l.size.bytes(), size); + assert_eq!(l.align.abi.bytes(), align); +} + +#[track_caller] +fn check_fail(ra_fixture: &str, e: LayoutError) { + let r = eval_goal(ra_fixture, ""); + assert_eq!(r, Err(e)); +} + +macro_rules! size_and_align { + (minicore: $($x:tt),*;$($t:tt)*) => { + { + #[allow(dead_code)] + $($t)* + check_size_and_align( + stringify!($($t)*), + &format!("//- minicore: {}\n", stringify!($($x),*)), + ::std::mem::size_of::() as u64, + ::std::mem::align_of::() as u64, + ); + } + }; + ($($t:tt)*) => { + { + #[allow(dead_code)] + $($t)* + check_size_and_align( + stringify!($($t)*), + "", + ::std::mem::size_of::() as u64, + ::std::mem::align_of::() as u64, + ); + } + }; +} + +#[test] +fn hello_world() { + size_and_align! { + struct Goal(i32); + } +} + +#[test] +fn field_order_optimization() { + size_and_align! { + struct Goal(u8, i32, u8); + } + size_and_align! { + #[repr(C)] + struct Goal(u8, i32, u8); + } +} + +#[test] +fn recursive() { + size_and_align! { + struct Goal { + left: &'static Goal, + right: &'static Goal, + } + } + size_and_align! { + struct BoxLike(*mut T); + struct Goal(BoxLike); + } + check_fail( + r#"struct Goal(Goal);"#, + LayoutError::UserError("infinite sized recursive type".to_string()), + ); + check_fail( + r#" + struct Foo(Foo); + struct Goal(Foo); + "#, + LayoutError::UserError("infinite sized recursive type".to_string()), + ); +} + +#[test] +fn generic() { + size_and_align! { + struct Pair(A, B); + struct Goal(Pair, i64>); + } + size_and_align! { + struct X { + field1: [i32; N], + field2: [u8; N], + } + struct Goal(X<1000>); + } +} + +#[test] +fn enums() { + size_and_align! { + enum Goal { + Quit, + Move { x: i32, y: i32 }, + ChangeColor(i32, i32, i32), + } + } +} + +#[test] +fn primitives() { + size_and_align! { + struct Goal(i32, i128, isize, usize, f32, f64, bool, char); + } +} + +#[test] +fn tuple() { + size_and_align! { + struct Goal((), (i32, u64, bool)); + } +} + +#[test] +fn non_zero() { + size_and_align! { + minicore: non_zero, option; + use core::num::NonZeroU8; + struct Goal(Option); + } +} + +#[test] +fn niche_optimization() { + size_and_align! { + minicore: option; + struct Goal(Option<&'static i32>); + } + size_and_align! { + minicore: option; + struct Goal(Option>); + } +} + +#[test] +fn enums_with_discriminants() { + size_and_align! { + enum Goal { + A = 1000, + B = 2000, + C = 3000, + } + } + size_and_align! { + enum Goal { + A = 254, + B, + C, // implicitly becomes 256, so we need two bytes + } + } +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/lib.rs b/src/tools/rust-analyzer/crates/hir-ty/src/lib.rs index 39514fc44e6c..cbe6873c7d5f 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/lib.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/lib.rs @@ -27,6 +27,8 @@ pub mod display; pub mod method_resolution; pub mod primitive; pub mod traits; +pub mod layout; +pub mod lang_items; #[cfg(test)] mod tests; @@ -38,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; @@ -46,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}; @@ -511,7 +515,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( @@ -531,54 +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.clone())) - .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.clone(), false, Safety::Safe)) + Some(CallableSig::from_params_and_return(params, ret_ty, false, Safety::Safe)) } diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs b/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs index baf9842d5fbf..592410008a67 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs @@ -603,9 +603,8 @@ impl<'a> TyLoweringContext<'a> { } fn select_associated_type(&self, res: Option, segment: PathSegment<'_>) -> Ty { - let (def, res) = match (self.resolver.generic_def(), res) { - (Some(def), Some(res)) => (def, res), - _ => return TyKind::Error.intern(Interner), + let Some((def, res)) = self.resolver.generic_def().zip(res) else { + return TyKind::Error.intern(Interner); }; let ty = named_associated_type_shorthand_candidates( self.db, @@ -617,6 +616,21 @@ impl<'a> TyLoweringContext<'a> { return None; } + let parent_subst = t.substitution.clone(); + let parent_subst = match self.type_param_mode { + ParamLoweringMode::Placeholder => { + // if we're lowering to placeholders, we have to put them in now. + let generics = generics(self.db.upcast(), def); + let s = generics.placeholder_subst(self.db); + s.apply(parent_subst, Interner) + } + ParamLoweringMode::Variable => { + // We need to shift in the bound vars, since + // `named_associated_type_shorthand_candidates` does not do that. + parent_subst.shifted_in_from(Interner, self.in_binders) + } + }; + // FIXME: `substs_from_path_segment()` pushes `TyKind::Error` for every parent // generic params. It's inefficient to splice the `Substitution`s, so we may want // that method to optionally take parent `Substitution` as we already know them at @@ -632,22 +646,9 @@ impl<'a> TyLoweringContext<'a> { let substs = Substitution::from_iter( Interner, - substs.iter(Interner).take(len_self).chain(t.substitution.iter(Interner)), + substs.iter(Interner).take(len_self).chain(parent_subst.iter(Interner)), ); - let substs = match self.type_param_mode { - ParamLoweringMode::Placeholder => { - // if we're lowering to placeholders, we have to put - // them in now - let generics = generics(self.db.upcast(), def); - let s = generics.placeholder_subst(self.db); - s.apply(substs, Interner) - } - ParamLoweringMode::Variable => substs, - }; - // We need to shift in the bound vars, since - // associated_type_shorthand_candidates does not do that - let substs = substs.shifted_in_from(Interner, self.in_binders); Some( TyKind::Alias(AliasTy::Projection(ProjectionTy { associated_ty_id: to_assoc_type_id(associated_ty), @@ -779,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, @@ -1190,9 +1191,9 @@ pub fn associated_type_shorthand_candidates( db: &dyn HirDatabase, def: GenericDefId, res: TypeNs, - cb: impl FnMut(&Name, &TraitRef, TypeAliasId) -> Option, + mut cb: impl FnMut(&Name, TypeAliasId) -> Option, ) -> Option { - named_associated_type_shorthand_candidates(db, def, res, None, cb) + named_associated_type_shorthand_candidates(db, def, res, None, |name, _, id| cb(name, id)) } fn named_associated_type_shorthand_candidates( @@ -1202,6 +1203,9 @@ fn named_associated_type_shorthand_candidates( def: GenericDefId, res: TypeNs, assoc_name: Option, + // Do NOT let `cb` touch `TraitRef` outside of `TyLoweringContext`. Its substitution contains + // free `BoundVar`s that need to be shifted and only `TyLoweringContext` knows how to do that + // properly (see `TyLoweringContext::select_associated_type()`). mut cb: impl FnMut(&Name, &TraitRef, TypeAliasId) -> Option, ) -> Option { let mut search = |t| { @@ -1792,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 = @@ -1830,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); @@ -1850,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() }; @@ -1979,7 +1981,7 @@ fn fallback_bound_vars + HasInterner ArrayVec { +) -> SmallVec<[CrateId; 2]> { let _p = profile::span("inherent_impl_crates_query"); - let mut res = ArrayVec::new(); + let mut res = SmallVec::new(); let crate_graph = db.crate_graph(); + // should pass crate for finger print and do reverse deps + for krate in crate_graph.transitive_deps(krate) { - if res.is_full() { - // we don't currently look for or store more than two crates here, - // so don't needlessly look at more crates than necessary. - break; - } let impls = db.inherent_impls_in_crate(krate); if impls.map.get(&fp).map_or(false, |v| !v.is_empty()) { res.push(krate); @@ -392,19 +388,40 @@ pub fn def_crates( db: &dyn HirDatabase, ty: &Ty, cur_crate: CrateId, -) -> Option> { - let mod_to_crate_ids = |module: ModuleId| Some(iter::once(module.krate()).collect()); - - let fp = TyFingerprint::for_inherent_impl(ty); - +) -> Option> { match ty.kind(Interner) { - TyKind::Adt(AdtId(def_id), _) => mod_to_crate_ids(def_id.module(db.upcast())), - TyKind::Foreign(id) => { - mod_to_crate_ids(from_foreign_def_id(*id).lookup(db.upcast()).module(db.upcast())) + &TyKind::Adt(AdtId(def_id), _) => { + let rustc_has_incoherent_inherent_impls = match def_id { + hir_def::AdtId::StructId(id) => { + db.struct_data(id).rustc_has_incoherent_inherent_impls + } + hir_def::AdtId::UnionId(id) => { + db.union_data(id).rustc_has_incoherent_inherent_impls + } + hir_def::AdtId::EnumId(id) => db.enum_data(id).rustc_has_incoherent_inherent_impls, + }; + Some(if rustc_has_incoherent_inherent_impls { + db.incoherent_inherent_impl_crates(cur_crate, TyFingerprint::Adt(def_id)) + } else { + smallvec![def_id.module(db.upcast()).krate()] + }) + } + &TyKind::Foreign(id) => { + let alias = from_foreign_def_id(id); + Some(if db.type_alias_data(alias).rustc_has_incoherent_inherent_impls { + db.incoherent_inherent_impl_crates(cur_crate, TyFingerprint::ForeignType(id)) + } else { + smallvec![alias.module(db.upcast()).krate()] + }) + } + TyKind::Dyn(_) => { + let trait_id = ty.dyn_trait()?; + Some(if db.trait_data(trait_id).rustc_has_incoherent_inherent_impls { + db.incoherent_inherent_impl_crates(cur_crate, TyFingerprint::Dyn(trait_id)) + } else { + smallvec![trait_id.module(db.upcast()).krate()] + }) } - TyKind::Dyn(_) => ty - .dyn_trait() - .and_then(|trait_| mod_to_crate_ids(GenericDefId::TraitId(trait_).module(db.upcast()))), // for primitives, there may be impls in various places (core and alloc // mostly). We just check the whole crate graph for crates with impls // (cached behind a query). @@ -412,10 +429,11 @@ pub fn def_crates( | TyKind::Str | TyKind::Slice(_) | TyKind::Array(..) - | TyKind::Raw(..) => { - Some(db.inherent_impl_crates(cur_crate, fp.expect("fingerprint for primitive"))) - } - _ => return None, + | TyKind::Raw(..) => Some(db.incoherent_inherent_impl_crates( + cur_crate, + TyFingerprint::for_inherent_impl(ty).expect("fingerprint for primitive"), + )), + _ => None, } } @@ -470,14 +488,15 @@ 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)> { - iterate_method_candidates( +) -> Option<(ReceiverAdjustments, FunctionId, bool)> { + let mut not_visible = None; + let res = iterate_method_candidates( ty, db, env, @@ -485,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, true)), + AssocItemId::FunctionId(f) if not_visible.is_none() => { + not_visible = Some((adjustments, f, false)); + None + } _ => None, }, - ) + ); + res.or(not_visible) } /// Whether we're looking up a dotted method call (like `v.len()`) or a path @@ -601,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( @@ -612,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(()); } @@ -624,6 +648,30 @@ pub(crate) fn iterate_method_candidates( slot } +pub fn lookup_impl_const( + db: &dyn HirDatabase, + env: Arc, + const_id: ConstId, + subs: Substitution, +) -> ConstId { + let trait_id = match const_id.lookup(db.upcast()).container { + ItemContainerId::TraitId(id) => id, + _ => return const_id, + }; + let substitution = Substitution::from_iter(Interner, subs.iter(Interner)); + let trait_ref = TraitRef { trait_id: to_chalk_trait_id(trait_id), substitution }; + + let const_data = db.const_data(const_id); + let name = match const_data.name.as_ref() { + Some(name) => name, + None => return const_id, + }; + + lookup_impl_assoc_item_for_trait_ref(trait_ref, db, env, name) + .and_then(|assoc| if let AssocItemId::ConstId(id) = assoc { Some(id) } else { None }) + .unwrap_or(const_id) +} + /// Looks up the impl method that actually runs for the trait method `func`. /// /// Returns `func` if it's not a method defined in a trait or the lookup failed. @@ -645,15 +693,17 @@ pub fn lookup_impl_method( }; let name = &db.function_data(func).name; - lookup_impl_method_for_trait_ref(trait_ref, db, env, name).unwrap_or(func) + lookup_impl_assoc_item_for_trait_ref(trait_ref, db, env, name) + .and_then(|assoc| if let AssocItemId::FunctionId(id) = assoc { Some(id) } else { None }) + .unwrap_or(func) } -fn lookup_impl_method_for_trait_ref( +fn lookup_impl_assoc_item_for_trait_ref( trait_ref: TraitRef, db: &dyn HirDatabase, env: Arc, name: &Name, -) -> Option { +) -> Option { let self_ty = trait_ref.self_type_parameter(Interner); let self_ty_fp = TyFingerprint::for_trait_impl(&self_ty)?; let impls = db.trait_impls_in_deps(env.krate); @@ -663,7 +713,15 @@ fn lookup_impl_method_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(|| *f), + AssocItemId::FunctionId(f) => { + (db.function_data(*f).name == *name).then_some(AssocItemId::FunctionId(*f)) + } + AssocItemId::ConstId(c) => db + .const_data(*c) + .name + .as_ref() + .map(|n| *n == *name) + .and_then(|result| if result { Some(AssocItemId::ConstId(*c)) } else { None }), _ => None, }) } @@ -719,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), ) } @@ -731,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 => { @@ -795,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 @@ -856,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()); @@ -868,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()), @@ -883,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), @@ -902,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()); @@ -933,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(); @@ -964,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() { @@ -974,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(()) @@ -987,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(); @@ -1076,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; @@ -1084,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(()) @@ -1100,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(()) @@ -1139,7 +1211,7 @@ pub fn resolve_indexing_op( macro_rules! check_that { ($cond:expr) => { if !$cond { - return false; + return IsValidCandidate::No; } }; } @@ -1151,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) => { @@ -1162,31 +1234,37 @@ 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) .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); - 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, @@ -1194,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 { @@ -1245,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 @@ -1260,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/src/tools/rust-analyzer/crates/hir-ty/src/tests.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests.rs index ebbc5410147c..ba5d9c241267 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/tests.rs @@ -94,18 +94,19 @@ 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()) .collect(), ); } else { - panic!("unexpected annotation: {}", expected); + panic!("unexpected annotation: {expected}"); } had_annotations = true; } @@ -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 {:?} adjustments, found none", expected); - } + 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/src/tools/rust-analyzer/crates/hir-ty/src/tests/coercion.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/coercion.rs index 7e3aecc2ae0a..3e110abaf4b1 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/coercion.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/tests/incremental.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/incremental.rs index 3e08e83e89a3..073d6d9be2b9 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/incremental.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/tests/macros.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/macros.rs index b3adafaafd38..8b75ec842a4f 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/macros.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/tests/method_resolution.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/method_resolution.rs index 5d76d185ffc0..6c7a5329970d 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/method_resolution.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/tests/method_resolution.rs @@ -1867,3 +1867,53 @@ fn g(a: T) { "#, ); } + +#[test] +fn incoherent_impls() { + check( + r#" +//- minicore: error, send +pub struct Box(T); +use core::error::Error; + +#[rustc_allow_incoherent_impl] +impl dyn Error { + pub fn downcast(self: Box) -> Result, Box> { + loop {} + } +} +#[rustc_allow_incoherent_impl] +impl dyn Error + Send { + /// Attempts to downcast the box to a concrete type. + pub fn downcast(self: Box) -> Result, Box> { + let err: Box = self; + // ^^^^ expected Box, got Box + // FIXME, type mismatch should not occur + ::downcast(err).map_err(|_| loop {}) + //^^^^^^^^^^^^^^^^^^^^^ type: fn downcast<{unknown}>(Box) -> Result, Box> + } +} +"#, + ); +} + +#[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: () +} +"#, + ); +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/tests/patterns.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/patterns.rs index 74de33117ee7..9333e2693522 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/patterns.rs +++ b/src/tools/rust-analyzer/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 +"#, + ); +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/tests/regression.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/regression.rs index 4e46397459d5..de6ae7fff8fb 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/regression.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/tests/regression.rs @@ -1723,3 +1723,24 @@ fn bar() -> ControlFlow<(), ()> { "#, ); } + +#[test] +fn assoc_type_shorthand_with_gats_in_binders() { + // c.f. test `issue_4885()` + check_no_mismatches( + r#" +trait Gats { + type Assoc; +} +trait Foo {} + +struct Bar<'a, B: Gats, A> { + field: &'a dyn Foo>, +} + +fn foo(b: Bar) { + let _ = b.field; +} +"#, + ); +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/tests/simple.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/simple.rs index d7431443b83d..146145523b24 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/simple.rs +++ b/src/tools/rust-analyzer/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 "#]], ) } diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/tests/traits.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tests/traits.rs index 3d7194b6f446..d01fe0632859 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tests/traits.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/tests/traits.rs @@ -1388,6 +1388,22 @@ fn foo() -> (impl FnOnce(&str, T), impl Trait) { ); } +#[test] +fn return_pos_impl_trait_in_projection() { + // Note that the unused type param `X` is significant; see #13307. + check_no_mismatches( + r#" +//- minicore: sized +trait Future { type Output; } +impl Future for () { type Output = i32; } +type Foo = (::Output, F); +fn foo() -> Foo> { + (0, ()) +} +"#, + ) +} + #[test] fn dyn_trait() { check_infer( @@ -4084,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 +} +"#, + ); +} diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/tls.rs b/src/tools/rust-analyzer/crates/hir-ty/src/tls.rs index 92711a24fe39..b7e6ee6740be 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/tls.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/traits.rs b/src/tools/rust-analyzer/crates/hir-ty/src/traits.rs index c425f35acfe7..778a6b82047e 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/traits.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/traits.rs @@ -18,7 +18,7 @@ use crate::{ }; /// This controls how much 'time' we give the Chalk solver before giving up. -const CHALK_SOLVER_FUEL: i32 = 100; +const CHALK_SOLVER_FUEL: i32 = 1000; #[derive(Debug, Copy, Clone)] pub(crate) struct ChalkContext<'a> { @@ -55,13 +55,10 @@ 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(|| *trait_id)) + .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then_some(*trait_id)) } } @@ -130,7 +127,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/src/tools/rust-analyzer/crates/hir-ty/src/utils.rs b/src/tools/rust-analyzer/crates/hir-ty/src/utils.rs index e54bcb421a22..9893566bd549 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/utils.rs +++ b/src/tools/rust-analyzer/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}; @@ -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); @@ -335,54 +333,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/src/tools/rust-analyzer/crates/hir/src/attrs.rs b/src/tools/rust-analyzer/crates/hir/src/attrs.rs index 0bd379340010..54425d69b6b7 100644 --- a/src/tools/rust-analyzer/crates/hir/src/attrs.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir/src/diagnostics.rs b/src/tools/rust-analyzer/crates/hir/src/diagnostics.rs index c5dc60f1ec5f..54d43fa8dc73 100644 --- a/src/tools/rust-analyzer/crates/hir/src/diagnostics.rs +++ b/src/tools/rust-analyzer/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::{AssocItem, Field, MacroKind, Type}; macro_rules! diagnostics { ($($diag:ident,)*) => { @@ -41,6 +41,8 @@ diagnostics![ MissingMatchArms, MissingUnsafe, NoSuchField, + PrivateAssocItem, + PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch, UnimplementedBuiltinMacro, @@ -121,6 +123,19 @@ 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>, + pub field: Field, +} + #[derive(Debug)] pub struct BreakOutsideOfLoop { pub expr: InFile>, diff --git a/src/tools/rust-analyzer/crates/hir/src/display.rs b/src/tools/rust-analyzer/crates/hir/src/display.rs index 27b2f445d73c..5a4b2f334496 100644 --- a/src/tools/rust-analyzer/crates/hir/src/display.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir/src/lib.rs b/src/tools/rust-analyzer/crates/hir/src/lib.rs index cbbcaebb4285..08fd4453dfca 100644 --- a/src/tools/rust-analyzer/crates/hir/src/lib.rs +++ b/src/tools/rust-analyzer/crates/hir/src/lib.rs @@ -39,12 +39,13 @@ use arrayvec::ArrayVec; use base_db::{CrateDisplayName, CrateId, CrateOrigin, Edition, FileId, ProcMacroKind}; use either::Either; use hir_def::{ - adt::{ReprData, VariantData}, + 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, + layout::{Layout, LayoutError, ReprOptions}, nameres::{self, diagnostics::DefDiagnostic}, per_ns::PerNs, resolver::{HasResolver, Resolver}, @@ -59,6 +60,7 @@ use hir_ty::{ all_super_traits, autoderef, consteval::{unknown_const_as_generic, ComputedExpr, ConstEvalError, ConstExt}, diagnostics::BodyValidationDiagnostic, + layout::layout_of_ty, method_resolution::{self, TyFingerprint}, primitive::UintTy, traits::FnTrait, @@ -72,7 +74,7 @@ use once_cell::unsync::Lazy; use rustc_hash::FxHashSet; use stdx::{impl_from, never}; use syntax::{ - ast::{self, Expr, HasAttrs as _, HasDocComments, HasName}, + ast::{self, HasAttrs as _, HasDocComments, HasName}, AstNode, AstPtr, SmolStr, SyntaxNodePtr, TextRange, T, }; @@ -83,9 +85,10 @@ pub use crate::{ diagnostics::{ AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, IncorrectCase, InvalidDeriveTarget, MacroError, MalformedDerive, MismatchedArgCount, MissingFields, MissingMatchArms, - MissingUnsafe, NoSuchField, 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}, @@ -112,12 +115,20 @@ pub use { path::{ModPath, PathKind}, type_ref::{Mutability, TypeRef}, visibility::Visibility, + // FIXME: This is here since it is input of a method in `HirWrite` + // and things outside of hir need to implement that trait. We probably + // should move whole `hir_ty::display` to this crate so we will become + // able to use `ModuleDef` or `Definition` instead of `ModuleDefId`. + ModuleDefId, }, hir_expand::{ name::{known, Name}, ExpandResult, HirFileId, InFile, MacroFile, Origin, }, - hir_ty::{display::HirDisplay, PointerCast, Safety}, + hir_ty::{ + display::{HirDisplay, HirWrite}, + PointerCast, Safety, + }, }; // These are negative re-exports: pub using these names is forbidden, they @@ -597,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 { @@ -803,7 +814,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))), @@ -844,6 +855,10 @@ impl Field { self.parent.variant_data(db).fields()[self.id].name.clone() } + pub fn index(&self) -> usize { + u32::from(self.id.into_raw()) as usize + } + /// Returns the type as in the signature of the struct (i.e., with /// placeholder types for type parameters). Only use this in the context of /// the field definition. @@ -859,6 +874,10 @@ impl Field { Type::new(db, var_id, ty) } + pub fn layout(&self, db: &dyn HirDatabase) -> Result { + layout_of_ty(db, &self.ty(db).ty, self.parent.module(db).krate().into()) + } + pub fn parent_def(&self, _db: &dyn HirDatabase) -> VariantDef { self.parent } @@ -900,7 +919,7 @@ impl Struct { Type::from_def(db, self.id) } - pub fn repr(self, db: &dyn HirDatabase) -> Option { + pub fn repr(self, db: &dyn HirDatabase) -> Option { db.struct_data(self.id).repr.clone() } @@ -984,8 +1003,30 @@ impl Enum { Type::new_for_crate( self.id.lookup(db.upcast()).container.krate(), TyBuilder::builtin(match db.enum_data(self.id).variant_body_type() { - Either::Left(builtin) => hir_def::builtin_type::BuiltinType::Int(builtin), - Either::Right(builtin) => hir_def::builtin_type::BuiltinType::Uint(builtin), + hir_def::layout::IntegerType::Pointer(sign) => match sign { + true => hir_def::builtin_type::BuiltinType::Int( + hir_def::builtin_type::BuiltinInt::Isize, + ), + false => hir_def::builtin_type::BuiltinType::Uint( + hir_def::builtin_type::BuiltinUint::Usize, + ), + }, + hir_def::layout::IntegerType::Fixed(i, sign) => match sign { + true => hir_def::builtin_type::BuiltinType::Int(match i { + hir_def::layout::Integer::I8 => hir_def::builtin_type::BuiltinInt::I8, + hir_def::layout::Integer::I16 => hir_def::builtin_type::BuiltinInt::I16, + hir_def::layout::Integer::I32 => hir_def::builtin_type::BuiltinInt::I32, + hir_def::layout::Integer::I64 => hir_def::builtin_type::BuiltinInt::I64, + hir_def::layout::Integer::I128 => hir_def::builtin_type::BuiltinInt::I128, + }), + false => hir_def::builtin_type::BuiltinType::Uint(match i { + hir_def::layout::Integer::I8 => hir_def::builtin_type::BuiltinUint::U8, + hir_def::layout::Integer::I16 => hir_def::builtin_type::BuiltinUint::U16, + hir_def::layout::Integer::I32 => hir_def::builtin_type::BuiltinUint::U32, + hir_def::layout::Integer::I64 => hir_def::builtin_type::BuiltinUint::U64, + hir_def::layout::Integer::I128 => hir_def::builtin_type::BuiltinUint::U128, + }), + }, }), ) } @@ -1042,7 +1083,7 @@ impl Variant { db.enum_data(self.parent.id).variants[self.id].variant_data.clone() } - pub fn value(self, db: &dyn HirDatabase) -> Option { + pub fn value(self, db: &dyn HirDatabase) -> Option { self.source(db)?.value.expr() } @@ -1076,6 +1117,13 @@ impl Adt { }) } + pub fn layout(self, db: &dyn HirDatabase) -> Result { + if db.generic_params(self.into()).iter().count() != 0 { + return Err(LayoutError::HasPlaceholder); + } + db.layout_of_adt(self.into(), Substitution::empty(Interner)) + } + /// Turns this ADT into a type. Any type parameters of the ADT will be /// turned into unknown types, which is good for e.g. finding the most /// general set of completions, but will not look very nice when printed. @@ -1306,6 +1354,25 @@ 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()) + } + &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() { @@ -1492,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 { @@ -2344,17 +2411,19 @@ 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 { match self.derive { - MacroId::Macro2Id(_) => None, + MacroId::Macro2Id(it) => { + db.macro2_data(it).helpers.as_deref().and_then(|it| it.get(self.idx)).cloned() + } MacroId::MacroRulesId(_) => None, MacroId::ProcMacroId(proc_macro) => db .proc_macro_data(proc_macro) .helpers - .as_ref() + .as_deref() .and_then(|it| it.get(self.idx)) .cloned(), } @@ -2712,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)) } @@ -2857,6 +2926,13 @@ impl Type { matches!(self.ty.kind(Interner), TyKind::Scalar(Scalar::Uint(UintTy::Usize))) } + pub fn is_int_or_uint(&self) -> bool { + match self.ty.kind(Interner) { + TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_)) => true, + _ => false, + } + } + pub fn remove_ref(&self) -> Option { match &self.ty.kind(Interner) { TyKind::Ref(.., ty) => Some(self.derived(ty.clone())), @@ -3031,7 +3107,7 @@ impl Type { let adt = adt_id.into(); match adt { - Adt::Struct(s) => matches!(s.repr(db), Some(ReprData { packed: true, .. })), + Adt::Struct(s) => s.repr(db).unwrap_or_default().pack.is_some(), _ => false, } } @@ -3225,7 +3301,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), ); } @@ -3650,6 +3726,13 @@ impl From for ScopeDef { } } +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Adjustment { + pub source: Type, + pub target: Type, + pub kind: Adjust, +} + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub enum Adjust { /// Go from ! to any type. diff --git a/src/tools/rust-analyzer/crates/hir/src/semantics.rs b/src/tools/rust-analyzer/crates/hir/src/semantics.rs index 2e1f88ba0904..e0d26103915c 100644 --- a/src/tools/rust-analyzer/crates/hir/src/semantics.rs +++ b/src/tools/rust-analyzer/crates/hir/src/semantics.rs @@ -2,14 +2,17 @@ mod source_to_def; -use std::{cell::RefCell, fmt, iter, ops}; +use std::{cell::RefCell, fmt, iter, mem, ops}; use base_db::{FileId, FileRange}; +use either::Either; use hir_def::{ - body, macro_id_to_def_id, + body, + expr::Expr, + macro_id_to_def_id, resolver::{self, HasResolver, Resolver, TypeNs}, type_ref::Mutability, - AsMacroCall, FunctionId, MacroId, TraitId, VariantId, + AsMacroCall, DefWithBodyId, FunctionId, MacroId, TraitId, VariantId, }; use hir_expand::{ db::AstDatabase, @@ -29,7 +32,7 @@ use crate::{ db::HirDatabase, semantics::source_to_def::{ChildContainer, SourceToDefCache, SourceToDefCtx}, source_analyzer::{resolve_hir_path, SourceAnalyzer}, - Access, Adjust, AutoBorrow, BindingMode, BuiltinAttr, Callable, ConstParam, Crate, + Access, Adjust, Adjustment, 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, @@ -334,7 +337,7 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { self.imp.resolve_trait(trait_) } - pub fn expr_adjustments(&self, expr: &ast::Expr) -> Option> { + pub fn expr_adjustments(&self, expr: &ast::Expr) -> Option> { self.imp.expr_adjustments(expr) } @@ -438,8 +441,7 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { } pub fn to_def(&self, src: &T) -> Option { - let src = self.imp.find_file(src.syntax()).with_value(src).cloned(); - T::to_def(&self.imp, src) + self.imp.to_def(src) } pub fn to_module_def(&self, file: FileId) -> Option { @@ -481,6 +483,11 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { pub fn is_unsafe_ident_pat(&self, ident_pat: &ast::IdentPat) -> bool { self.imp.is_unsafe_ident_pat(ident_pat) } + + /// Returns `true` if the `node` is inside an `unsafe` context. + pub fn is_inside_unsafe(&self, expr: &ast::Expr) -> bool { + self.imp.is_inside_unsafe(expr) + } } impl<'db> SemanticsImpl<'db> { @@ -788,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 @@ -840,7 +847,7 @@ impl<'db> 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()?; @@ -1067,26 +1074,42 @@ impl<'db> SemanticsImpl<'db> { } } - fn expr_adjustments(&self, expr: &ast::Expr) -> Option> { + 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| { + + let analyzer = self.analyze(expr.syntax())?; + + let (mut source_ty, _) = analyzer.type_of_expr(self.db, expr)?; + + analyzer.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), + .map(|adjust| { + let target = + Type::new_with_resolver(self.db, &analyzer.resolver, adjust.target.clone()); + let kind = 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), + }; + + // Update `source_ty` for the next adjustment + let source = mem::replace(&mut source_ty, target.clone()); + + let adjustment = Adjustment { source, target, kind }; + + adjustment }) .collect() }) @@ -1198,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 { @@ -1223,10 +1246,15 @@ 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) } + fn to_def(&self, src: &T) -> Option { + let src = self.find_file(src.syntax()).with_value(src).cloned(); + T::to_def(self, src) + } + fn to_module_def(&self, file: FileId) -> impl Iterator { self.with_ctx(|ctx| ctx.file_to_def(file)).into_iter().map(Module::from) } @@ -1350,7 +1378,7 @@ impl<'db> SemanticsImpl<'db> { self.cache .borrow() .keys() - .map(|it| format!("{:?}", it)) + .map(|it| format!("{it:?}")) .collect::>() .join(", ") ) @@ -1442,6 +1470,56 @@ impl<'db> SemanticsImpl<'db> { .map(|ty| ty.original.is_packed(self.db)) .unwrap_or(false) } + + fn is_inside_unsafe(&self, expr: &ast::Expr) -> bool { + let item_or_variant = |ancestor: SyntaxNode| { + if ast::Item::can_cast(ancestor.kind()) { + ast::Item::cast(ancestor).map(Either::Left) + } else { + ast::Variant::cast(ancestor).map(Either::Right) + } + }; + let Some(enclosing_item) = expr.syntax().ancestors().find_map(item_or_variant) else { return false }; + + let def = match &enclosing_item { + Either::Left(ast::Item::Fn(it)) if it.unsafe_token().is_some() => return true, + Either::Left(ast::Item::Fn(it)) => { + self.to_def(it).map(<_>::into).map(DefWithBodyId::FunctionId) + } + Either::Left(ast::Item::Const(it)) => { + self.to_def(it).map(<_>::into).map(DefWithBodyId::ConstId) + } + Either::Left(ast::Item::Static(it)) => { + self.to_def(it).map(<_>::into).map(DefWithBodyId::StaticId) + } + Either::Left(_) => None, + Either::Right(it) => self.to_def(it).map(<_>::into).map(DefWithBodyId::VariantId), + }; + let Some(def) = def else { return false }; + let enclosing_node = enclosing_item.as_ref().either(|i| i.syntax(), |v| v.syntax()); + + let (body, source_map) = self.db.body_with_source_map(def); + + let file_id = self.find_file(expr.syntax()).file_id; + + let Some(mut parent) = expr.syntax().parent() else { return false }; + loop { + if &parent == enclosing_node { + break false; + } + + if let Some(parent) = ast::Expr::cast(parent.clone()) { + if let Some(expr_id) = source_map.node_expr(InFile { file_id, value: &parent }) { + if let Expr::Unsafe { .. } = body[expr_id] { + break true; + } + } + } + + let Some(parent_) = parent.parent() else { break false }; + parent = parent_; + } + } } fn macro_call_to_macro_id( @@ -1600,7 +1678,7 @@ impl<'a> SemanticsScope<'a> { self.db, def, resolution.in_type_ns()?, - |name, _, id| cb(name, id.into()), + |name, id| cb(name, id.into()), ) } } diff --git a/src/tools/rust-analyzer/crates/hir/src/source_analyzer.rs b/src/tools/rust-analyzer/crates/hir/src/source_analyzer.rs index 91ea1c24d14f..059b80bcf139 100644 --- a/src/tools/rust-analyzer/crates/hir/src/source_analyzer.rs +++ b/src/tools/rust-analyzer/crates/hir/src/source_analyzer.rs @@ -21,8 +21,8 @@ use hir_def::{ path::{ModPath, Path, PathKind}, resolver::{resolver_for_scope, Resolver, TypeNs, ValueNs}, type_ref::Mutability, - AsMacroCall, AssocItemId, DefWithBodyId, FieldId, FunctionId, ItemContainerId, LocalFieldId, - Lookup, ModuleDefId, TraitId, VariantId, + AsMacroCall, AssocItemId, ConstId, DefWithBodyId, FieldId, FunctionId, ItemContainerId, + LocalFieldId, Lookup, ModuleDefId, TraitId, VariantId, }; use hir_expand::{ builtin_fn_macro::BuiltinFnLikeExpander, @@ -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()), }; @@ -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 @@ -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()?; @@ -482,7 +482,7 @@ impl SourceAnalyzer { let infer = self.infer.as_deref()?; if let Some(path_expr) = parent().and_then(ast::PathExpr::cast) { let expr_id = self.expr_id(db, &path_expr.into())?; - if let Some(assoc) = infer.assoc_resolutions_for_expr(expr_id) { + if let Some((assoc, subs)) = infer.assoc_resolutions_for_expr(expr_id) { let assoc = match assoc { AssocItemId::FunctionId(f_in_trait) => { match infer.type_of_expr.get(expr_id) { @@ -501,7 +501,9 @@ impl SourceAnalyzer { } } } - + AssocItemId::ConstId(const_id) => { + self.resolve_impl_const_or_trait_def(db, const_id, subs).into() + } _ => assoc, }; @@ -515,7 +517,7 @@ impl SourceAnalyzer { prefer_value_ns = true; } else if let Some(path_pat) = parent().and_then(ast::PathPat::cast) { let pat_id = self.pat_id(&path_pat.into())?; - if let Some(assoc) = infer.assoc_resolutions_for_pat(pat_id) { + if let Some((assoc, _)) = infer.assoc_resolutions_for_pat(pat_id) { return Some(PathResolution::Def(AssocItem::from(assoc).into())); } if let Some(VariantId::EnumVariantId(variant)) = @@ -792,6 +794,24 @@ impl SourceAnalyzer { method_resolution::lookup_impl_method(db, env, func, substs) } + fn resolve_impl_const_or_trait_def( + &self, + db: &dyn HirDatabase, + const_id: ConstId, + subs: Substitution, + ) -> ConstId { + let krate = self.resolver.krate(); + let owner = match self.resolver.body_owner() { + Some(it) => it, + None => return const_id, + }; + let env = owner.as_generic_def_id().map_or_else( + || Arc::new(hir_ty::TraitEnvironment::empty(krate)), + |d| db.trait_environment(d), + ); + method_resolution::lookup_impl_const(db, env, const_id, subs) + } + fn lang_trait_fn( &self, db: &dyn HirDatabase, @@ -804,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)?) } } @@ -967,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/src/tools/rust-analyzer/crates/ide-assists/Cargo.toml b/src/tools/rust-analyzer/crates/ide-assists/Cargo.toml index e781c0a016d5..b9260473b12d 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/Cargo.toml +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_explicit_type.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_explicit_type.rs index b5f99726fe1c..0057f439f1af 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_explicit_type.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs index 2b3793659cf7..161bcc5c8da5 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs +++ b/src/tools/rust-analyzer/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)?; @@ -1343,4 +1351,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) {} +}"#, + ) + } } diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs index 73f4db4e5ff2..8e4ac69ae6f6 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_return_type.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_return_type.rs index 89040a8569e6..879c478acf88 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_return_type.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/auto_import.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/auto_import.rs index a689270bc091..698ad78cce6f 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/auto_import.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs index 80eecf4a0986..f32ef2d59d89 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs index 92e091fca126..b0383291e737 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs +++ b/src/tools/rust-analyzer/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( diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_format_string_arg.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs similarity index 84% rename from src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_format_string_arg.rs rename to src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs index 11db6ae7f7b8..4f3b6e0c287c 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_format_string_arg.rs +++ b/src/tools/rust-analyzer/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. // @@ -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,11 +36,14 @@ use syntax::{ast, AstNode, AstToken, NodeOrToken, SyntaxKind::COMMA, TextRange}; // } // // fn main() { -// print!("{}"$0, x + 1); +// print!("{var} {}"$0, x + 1); // } // ``` -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 @@ -66,7 +69,7 @@ pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) AssistKind::QuickFix }, ), - "Extract format args", + "Extract format expressions", tt.syntax().text_range(), |edit| { let fmt_range = fmt_string.syntax().text_range(); @@ -118,15 +121,14 @@ pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) 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) => { @@ -139,6 +141,7 @@ pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) } } } + Arg::Ident(_s) => (), } } @@ -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() { @@ -289,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) +} "#, ), ); diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_function.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_function.rs index c1e2f19ab18b..e04a1dabb2c5 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_function.rs +++ b/src/tools/rust-analyzer/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, } @@ -265,7 +270,7 @@ enum ParamKind { MutRef, } -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug)] enum FunType { Unit, Single(hir::Type), @@ -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, @@ -584,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) } } } @@ -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 { @@ -1368,7 +1383,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) @@ -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) @@ -1785,7 +1800,7 @@ 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) } }; @@ -1845,9 +1860,29 @@ fn with_default_tail_expr(block: ast::BlockExpr, tail_expr: ast::Expr) -> ast::B } fn with_tail_expr(block: ast::BlockExpr, tail_expr: ast::Expr) -> ast::BlockExpr { - let stmt_tail = block.tail_expr().map(|expr| make::expr_stmt(expr).into()); - let stmts = block.statements().chain(stmt_tail); - make::block_expr(stmts, Some(tail_expr)) + let stmt_tail_opt: Option = + block.tail_expr().map(|expr| make::expr_stmt(expr).into()); + + let mut elements: Vec = vec![]; + + block.statements().for_each(|stmt| { + elements.push(syntax::NodeOrToken::Node(stmt.syntax().clone())); + }); + + if let Some(stmt_list) = block.stmt_list() { + stmt_list.syntax().children_with_tokens().for_each(|node_or_token| { + match &node_or_token { + syntax::NodeOrToken::Token(_) => elements.push(node_or_token), + _ => (), + }; + }); + } + + if let Some(stmt_tail) = stmt_tail_opt { + elements.push(syntax::NodeOrToken::Node(stmt_tail.syntax().clone())); + } + + make::hacky_block_expr(elements, Some(tail_expr)) } fn format_type(ty: &hir::Type, ctx: &AssistContext<'_>, module: hir::Module) -> String { @@ -1946,7 +1981,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()) @@ -4944,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#" @@ -4965,6 +4999,7 @@ fn func() { fn $0fun_name() { let a = 0; + let x = 0; } "#, @@ -5582,6 +5617,193 @@ 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) +} +"#, + ); + } + + #[test] + fn non_tail_expr_with_comment_of_tail_expr_loop() { + check_assist( + extract_function, + r#" +pub fn f() { + loop { + $0// A comment + if 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<()> { + // A comment + if true { + return ControlFlow::Break(()); + } + ControlFlow::Continue(()) +} "#, ); } diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_module.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_module.rs index 56834394aeba..0fa7bd558bbf 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_module.rs +++ b/src/tools/rust-analyzer/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, @@ -116,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)); @@ -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, + } +} +"#, + ); + } } diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index b4e10667b07a..49debafe1a0a 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_type_alias.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_type_alias.rs index 3116935fc5e7..0505f5784f81 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/extract_type_alias.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_default_from_new.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_default_from_new.rs index 49d9fd707ffc..2d074a33e7fd 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_default_from_new.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_delegate_methods.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_delegate_methods.rs index ceae80755037..c8d0493d097c 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_delegate_methods.rs +++ b/src/tools/rust-analyzer/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 @@ -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 } }"#, ); diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs index 55b7afb3d3b0..b6958e29193c 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_projection_method.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_projection_method.rs index c9aa41c845ad..ee643ce9a4ac 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_projection_method.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_variant.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_variant.rs index 0bcb5728311b..cd037f7492c6 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_enum_variant.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_from_impl_for_enum.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_from_impl_for_enum.rs index 7c81d2c6a6cc..742f1f78c2ec 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_from_impl_for_enum.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_from_impl_for_enum.rs @@ -1,7 +1,9 @@ use ide_db::{famous_defs::FamousDefs, RootDatabase}; use syntax::ast::{self, AstNode, HasName}; -use crate::{utils::generate_trait_impl_text, AssistContext, AssistId, AssistKind, Assists}; +use crate::{ + utils::generate_trait_impl_text_intransitive, AssistContext, AssistId, AssistKind, Assists, +}; // Assist: generate_from_impl_for_enum // @@ -70,7 +72,7 @@ pub(crate) fn generate_from_impl_for_enum( }}"# ) }; - let from_impl = generate_trait_impl_text(&enum_, &from_trait, &impl_code); + let from_impl = generate_trait_impl_text_intransitive(&enum_, &from_trait, &impl_code); edit.insert(start_offset, from_impl); }, ) diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs index 57f198748cb7..da9b0cda5b59 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_getter.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_getter.rs index 5e7191428349..15641b448d00 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_getter.rs +++ b/src/tools/rust-analyzer/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 { @@ -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), @@ -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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_impl.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_impl.rs index 9af26c04eb45..9ad14a819d97 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_impl.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_impl.rs @@ -1,14 +1,17 @@ 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_intransitive}, + AssistContext, AssistId, AssistKind, Assists, +}; // Assist: generate_impl // // Adds a new inherent impl for a type. // // ``` -// struct Ctx { -// data: T,$0 +// struct Ctx$0 { +// data: T, // } // ``` // -> @@ -26,6 +29,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}`"), @@ -46,130 +53,211 @@ 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_intransitive(&nominal, "$0", ""); + edit.insert_snippet(cap, start_offset, snippet); + } + None => { + let text = generate_trait_impl_text_intransitive(&nominal, "", ""); + edit.insert(start_offset, text); + } + } + }, + ) +} + #[cfg(test)] mod tests { use crate::tests::{check_assist, check_assist_target}; 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}", + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl Foo { + $0 + } + "#, ); + } + + #[test] + fn test_add_impl_with_generics() { check_assist( generate_impl, r#" - struct MyOwnArray {}$0"#, + struct Foo$0 {} + "#, r#" - struct MyOwnArray {} + struct Foo {} - impl MyOwnArray { - $0 - }"#, + impl Foo { + $0 + } + "#, ); + } + + #[test] + fn test_add_impl_with_generics_and_lifetime_parameters() { check_assist( generate_impl, r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo<'a>> {$0}"#, + struct Foo<'a, T: Foo<'a>>$0 {} + "#, r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo<'a>> {} + struct Foo<'a, T: Foo<'a>> {} - #[cfg(feature = "foo")] - impl<'a, T: Foo<'a>> Foo<'a, T> { - $0 - }"#, + impl<'a, T: Foo<'a>> Foo<'a, T> { + $0 + } + "#, ); + } + #[test] + fn test_add_impl_with_attributes() { check_assist( generate_impl, r#" - #[cfg(not(feature = "foo"))] - struct Foo<'a, T: Foo<'a>> {$0}"#, + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo$0<'a>> {} + "#, r#" - #[cfg(not(feature = "foo"))] - struct Foo<'a, T: Foo<'a>> {} + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo<'a>> {} - #[cfg(not(feature = "foo"))] - impl<'a, T: Foo<'a>> Foo<'a, T> { - $0 - }"#, + #[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"#, + struct Defaulted$0 {} + "#, r#" - struct Defaulted {} + struct Defaulted {} - impl Defaulted { - $0 - }"#, + impl Defaulted { + $0 + } + "#, ); + } + #[test] + fn test_add_impl_with_constrained_default_generic() { check_assist( generate_impl, r#" - struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {}$0"#, + 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> {} + 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 - }"#, + 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"#, + struct Defaulted$0 {} + "#, r#" - struct Defaulted {} + struct Defaulted {} - impl Defaulted { - $0 - }"#, + 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, -} + 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 Struct + where + T: Trait, + { + $0 + } + "#, ); } @@ -177,14 +265,181 @@ where fn add_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>> {}", + ); + } + + #[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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_new.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_new.rs index 17fadea0eaf1..8d311262a753 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_new.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_call.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_call.rs index 0c546ce5d41c..5ac18727c196 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_call.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_macro.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_macro.rs new file mode 100644 index 000000000000..9d03f03d201a --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_macro.rs @@ -0,0 +1,233 @@ +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 unexpanded = ctx.find_node_at_offset::()?; + let expanded = ctx.sema.expand(&unexpanded)?.clone_for_update(); + + let text_range = unexpanded.syntax().text_range(); + + acc.add( + AssistId("inline_macro", AssistKind::RefactorRewrite), + format!("Inline macro"), + text_range, + |builder| builder.replace(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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_type_alias.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_type_alias.rs index 353d467ed19f..5982e9d61dbf 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/inline_type_alias.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_const_to_impl.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_const_to_impl.rs new file mode 100644 index 000000000000..0e3a1e652b0d --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_const_to_impl.rs @@ -0,0 +1,481 @@ +use hir::{AsAssocItem, AssocItemContainer, HasCrate, HasSource}; +use ide_db::{assists::AssistId, base_db::FileRange, defs::Definition, search::SearchScope}; +use syntax::{ + ast::{self, edit::IndentLevel, edit_in_place::Indent, AstNode}, + SyntaxKind, +}; + +use crate::{ + assist_context::{AssistContext, Assists}, + utils, +}; + +// NOTE: Code may break if the self type implements a trait that has associated const with the same +// name, but it's pretty expensive to check that (`hir::Impl::all_for_type()`) and we assume that's +// pretty rare case. + +// Assist: move_const_to_impl +// +// Move a local constant item in a method to impl's associated constant. All the references will be +// qualified with `Self::`. +// +// ``` +// struct S; +// impl S { +// fn foo() -> usize { +// /// The answer. +// const C$0: usize = 42; +// +// C * C +// } +// } +// ``` +// -> +// ``` +// struct S; +// impl S { +// /// The answer. +// const C: usize = 42; +// +// fn foo() -> usize { +// Self::C * Self::C +// } +// } +// ``` +pub(crate) fn move_const_to_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let db = ctx.db(); + let const_: ast::Const = ctx.find_node_at_offset()?; + // Don't show the assist when the cursor is at the const's body. + if let Some(body) = const_.body() { + if body.syntax().text_range().contains(ctx.offset()) { + return None; + } + } + + let parent_fn = const_.syntax().ancestors().find_map(ast::Fn::cast)?; + + // NOTE: We can technically provide this assist for default methods in trait definitions, but + // it's somewhat complex to handle it correctly when the const's name conflicts with + // supertrait's item. We may want to consider implementing it in the future. + let AssocItemContainer::Impl(impl_) = ctx.sema.to_def(&parent_fn)?.as_assoc_item(db)?.container(db) else { return None; }; + if impl_.trait_(db).is_some() { + return None; + } + + let def = ctx.sema.to_def(&const_)?; + let name = def.name(db)?; + let items = impl_.source(db)?.value.assoc_item_list()?; + + let ty = impl_.self_ty(db); + // If there exists another associated item with the same name, skip the assist. + if ty + .iterate_assoc_items(db, ty.krate(db), |assoc| { + // Type aliases wouldn't conflict due to different namespaces, but we're only checking + // the items in inherent impls, so we assume `assoc` is never type alias for the sake + // of brevity (inherent associated types exist in nightly Rust, but it's *very* + // unstable and we don't support them either). + assoc.name(db).filter(|it| it == &name) + }) + .is_some() + { + return None; + } + + let usages = + Definition::Const(def).usages(&ctx.sema).in_scope(SearchScope::file_range(FileRange { + file_id: ctx.file_id(), + range: parent_fn.syntax().text_range(), + })); + + acc.add( + AssistId("move_const_to_impl", crate::AssistKind::RefactorRewrite), + "Move const to impl block", + const_.syntax().text_range(), + |builder| { + let range_to_delete = match const_.syntax().next_sibling_or_token() { + Some(s) if matches!(s.kind(), SyntaxKind::WHITESPACE) => { + // Remove following whitespaces too. + const_.syntax().text_range().cover(s.text_range()) + } + _ => const_.syntax().text_range(), + }; + builder.delete(range_to_delete); + + let const_ref = format!("Self::{name}"); + for range in usages.all().file_ranges().map(|it| it.range) { + builder.replace(range, const_ref.clone()); + } + + // Heuristically inserting the extracted const after the consecutive existing consts + // from the beginning of assoc items. We assume there are no inherent assoc type as + // above. + let last_const = + items.assoc_items().take_while(|it| matches!(it, ast::AssocItem::Const(_))).last(); + let insert_offset = match &last_const { + Some(it) => it.syntax().text_range().end(), + None => match items.l_curly_token() { + Some(l_curly) => l_curly.text_range().end(), + // Not sure if this branch is ever reachable, but it wouldn't hurt to have a + // fallback. + None => items.syntax().text_range().start(), + }, + }; + + // If the moved const will be the first item of the impl, add a new line after that. + // + // We're assuming the code is formatted according to Rust's standard style guidelines + // (i.e. no empty lines between impl's `{` token and its first assoc item). + let fixup = if last_const.is_none() { "\n" } else { "" }; + let indent = IndentLevel::from_node(parent_fn.syntax()); + + let const_ = const_.clone_for_update(); + const_.reindent_to(indent); + let mut const_text = format!("\n{indent}{const_}{fixup}"); + utils::escape_non_snippet(&mut const_text); + builder.insert(insert_offset, const_text); + }, + ) +} + +#[cfg(test)] +mod tests { + use crate::tests::{check_assist, check_assist_not_applicable}; + + use super::*; + + #[test] + fn not_applicable_to_top_level_const() { + check_assist_not_applicable( + move_const_to_impl, + r#" +const C$0: () = (); +"#, + ); + } + + #[test] + fn not_applicable_to_free_fn() { + check_assist_not_applicable( + move_const_to_impl, + r#" +fn f() { + const C$0: () = (); +} +"#, + ); + } + + #[test] + fn not_applicable_when_at_const_body() { + check_assist_not_applicable( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() { + const C: () = ($0); + } +} + "#, + ); + } + + #[test] + fn not_applicable_when_inside_const_body_block() { + check_assist_not_applicable( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() { + const C: () = { + ($0) + }; + } +} + "#, + ); + } + + #[test] + fn not_applicable_to_trait_impl_fn() { + check_assist_not_applicable( + move_const_to_impl, + r#" +trait Trait { + fn f(); +} +impl Trait for () { + fn f() { + const C$0: () = (); + } +} +"#, + ); + } + + #[test] + fn not_applicable_to_non_assoc_fn_inside_impl() { + check_assist_not_applicable( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() { + fn g() { + const C$0: () = (); + } + } +} +"#, + ); + } + + #[test] + fn not_applicable_when_const_with_same_name_exists() { + check_assist_not_applicable( + move_const_to_impl, + r#" +struct S; +impl S { + const C: usize = 42; + fn f() { + const C$0: () = (); + } +"#, + ); + + check_assist_not_applicable( + move_const_to_impl, + r#" +struct S; +impl S { + const C: usize = 42; +} +impl S { + fn f() { + const C$0: () = (); + } +"#, + ); + } + + #[test] + fn move_const_simple_body() { + check_assist( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() -> usize { + /// doc comment + const C$0: usize = 42; + + C * C + } +} +"#, + r#" +struct S; +impl S { + /// doc comment + const C: usize = 42; + + fn f() -> usize { + Self::C * Self::C + } +} +"#, + ); + } + + #[test] + fn move_const_simple_body_existing_const() { + check_assist( + move_const_to_impl, + r#" +struct S; +impl S { + const X: () = (); + const Y: () = (); + + fn f() -> usize { + /// doc comment + const C$0: usize = 42; + + C * C + } +} +"#, + r#" +struct S; +impl S { + const X: () = (); + const Y: () = (); + /// doc comment + const C: usize = 42; + + fn f() -> usize { + Self::C * Self::C + } +} +"#, + ); + } + + #[test] + fn move_const_block_body() { + check_assist( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() -> usize { + /// doc comment + const C$0: usize = { + let a = 3; + let b = 4; + a * b + }; + + C * C + } +} +"#, + r#" +struct S; +impl S { + /// doc comment + const C: usize = { + let a = 3; + let b = 4; + a * b + }; + + fn f() -> usize { + Self::C * Self::C + } +} +"#, + ); + } + + #[test] + fn correct_indent_when_nested() { + check_assist( + move_const_to_impl, + r#" +fn main() { + struct S; + impl S { + fn f() -> usize { + /// doc comment + const C$0: usize = 42; + + C * C + } + } +} +"#, + r#" +fn main() { + struct S; + impl S { + /// doc comment + const C: usize = 42; + + fn f() -> usize { + Self::C * Self::C + } + } +} +"#, + ) + } + + #[test] + fn move_const_in_nested_scope_with_same_name_in_other_scope() { + check_assist( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() -> usize { + const C: &str = "outer"; + + let n = { + /// doc comment + const C$0: usize = 42; + + let m = { + const C: &str = "inner"; + C.len() + }; + + C * m + }; + + n + C.len() + } +} +"#, + r#" +struct S; +impl S { + /// doc comment + const C: usize = 42; + + fn f() -> usize { + const C: &str = "outer"; + + let n = { + let m = { + const C: &str = "inner"; + C.len() + }; + + Self::C * m + }; + + n + C.len() + } +} +"#, + ); + } + + #[test] + fn moved_const_body_is_escaped() { + // Note that the last argument is what *lsp clients would see* rather than + // what users would see. Unescaping happens thereafter. + check_assist( + move_const_to_impl, + r#" +struct S; +impl S { + fn f() -> usize { + /// doc comment + /// \\ + /// ${snippet} + const C$0: &str = "\ and $1"; + + C.len() + } +} +"#, + r#" +struct S; +impl S { + /// doc comment + /// \\\\ + /// \${snippet} + const C: &str = "\\ and \$1"; + + fn f() -> usize { + Self::C.len() + } +} +"#, + ) + } +} diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/qualify_method_call.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/qualify_method_call.rs index 1ea87429c509..e7014597a1d8 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/qualify_method_call.rs +++ b/src/tools/rust-analyzer/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| { diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_dbg.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_dbg.rs index 99ae60e07bcf..52dd670ec2a4 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_dbg.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_parentheses.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_parentheses.rs new file mode 100644 index 000000000000..e9c7c6bae9ce --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/remove_parentheses.rs @@ -0,0 +1,221 @@ +use syntax::{ast, AstNode}; + +use crate::{AssistContext, AssistId, AssistKind, Assists}; + +// Assist: remove_parentheses +// +// Removes redundant parentheses. +// +// ``` +// fn main() { +// _ = $0(2) + 2; +// } +// ``` +// -> +// ``` +// fn main() { +// _ = 2 + 2; +// } +// ``` +pub(crate) fn remove_parentheses(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let parens = ctx.find_node_at_offset::()?; + + let cursor_in_range = + parens.l_paren_token()?.text_range().contains_range(ctx.selection_trimmed()) + || parens.r_paren_token()?.text_range().contains_range(ctx.selection_trimmed()); + if !cursor_in_range { + return None; + } + + let expr = parens.expr()?; + + let parent = parens.syntax().parent()?; + if expr.needs_parens_in(parent) { + return None; + } + + let target = parens.syntax().text_range(); + acc.add( + AssistId("remove_parentheses", AssistKind::Refactor), + "Remove redundant parentheses", + target, + |builder| builder.replace_ast(parens.into(), expr), + ) +} + +#[cfg(test)] +mod tests { + use crate::tests::{check_assist, check_assist_not_applicable}; + + use super::*; + + #[test] + fn remove_parens_simple() { + check_assist(remove_parentheses, r#"fn f() { $0(2) + 2; }"#, r#"fn f() { 2 + 2; }"#); + check_assist(remove_parentheses, r#"fn f() { ($02) + 2; }"#, r#"fn f() { 2 + 2; }"#); + check_assist(remove_parentheses, r#"fn f() { (2)$0 + 2; }"#, r#"fn f() { 2 + 2; }"#); + check_assist(remove_parentheses, r#"fn f() { (2$0) + 2; }"#, r#"fn f() { 2 + 2; }"#); + } + + #[test] + fn remove_parens_closure() { + check_assist(remove_parentheses, r#"fn f() { &$0(|| 42) }"#, r#"fn f() { &|| 42 }"#); + + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0(|| 42).f() }"#); + } + + #[test] + fn remove_parens_if_let_chains() { + check_assist_not_applicable( + remove_parentheses, + r#"fn f() { if let true = $0(true && true) {} }"#, + ); + } + + #[test] + fn remove_parens_associativity() { + check_assist( + remove_parentheses, + r#"fn f() { $0(2 + 2) + 2; }"#, + r#"fn f() { 2 + 2 + 2; }"#, + ); + check_assist_not_applicable(remove_parentheses, r#"fn f() { 2 + $0(2 + 2); }"#); + } + + #[test] + fn remove_parens_precedence() { + check_assist( + remove_parentheses, + r#"fn f() { $0(2 * 3) + 1; }"#, + r#"fn f() { 2 * 3 + 1; }"#, + ); + check_assist(remove_parentheses, r#"fn f() { ( $0(2) ); }"#, r#"fn f() { ( 2 ); }"#); + check_assist(remove_parentheses, r#"fn f() { $0(2?)?; }"#, r#"fn f() { 2??; }"#); + check_assist(remove_parentheses, r#"fn f() { f(($02 + 2)); }"#, r#"fn f() { f(2 + 2); }"#); + check_assist( + remove_parentheses, + r#"fn f() { (1<2)&&$0(3>4); }"#, + r#"fn f() { (1<2)&&3>4; }"#, + ); + } + + #[test] + fn remove_parens_doesnt_apply_precedence() { + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0(2 + 2) * 8; }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0(2 + 2).f(); }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0(2 + 2).await; }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0!(2..2); }"#); + } + + #[test] + fn remove_parens_doesnt_apply_with_cursor_not_on_paren() { + check_assist_not_applicable(remove_parentheses, r#"fn f() { (2 +$0 2) }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() {$0 (2 + 2) }"#); + } + + #[test] + fn remove_parens_doesnt_apply_when_expr_would_be_turned_into_a_statement() { + check_assist_not_applicable(remove_parentheses, r#"fn x() -> u8 { $0({ 0 } + 1) }"#); + check_assist_not_applicable( + remove_parentheses, + r#"fn x() -> u8 { $0(if true { 0 } else { 1 } + 1) }"#, + ); + check_assist_not_applicable(remove_parentheses, r#"fn x() -> u8 { $0(loop {} + 1) }"#); + } + + #[test] + fn remove_parens_doesnt_apply_weird_syntax_and_adge_cases() { + // removing `()` would break code because {} would be counted as the loop/if body + check_assist_not_applicable(remove_parentheses, r#"fn f() { for _ in $0(0..{3}) {} }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { for _ in $0(S {}) {} }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { if $0(S {} == 2) {} }"#); + check_assist_not_applicable(remove_parentheses, r#"fn f() { if $0(return) {} }"#); + } + + #[test] + fn remove_parens_return_with_value_followed_by_block() { + check_assist( + remove_parentheses, + r#"fn f() { if $0(return ()) {} }"#, + r#"fn f() { if return () {} }"#, + ); + } + + #[test] + fn remove_exprs_let_else_restrictions() { + // `}` is not allowed before `else` here + check_assist_not_applicable( + remove_parentheses, + r#"fn f() { let _ = $0(S{}) else { return }; }"#, + ); + + // logic operators can't directly appear in the let-else + check_assist_not_applicable( + remove_parentheses, + r#"fn f() { let _ = $0(false || false) else { return }; }"#, + ); + check_assist_not_applicable( + remove_parentheses, + r#"fn f() { let _ = $0(true && true) else { return }; }"#, + ); + } + + #[test] + fn remove_parens_weird_places() { + check_assist( + remove_parentheses, + r#"fn f() { match () { _=>$0(()) } }"#, + r#"fn f() { match () { _=>() } }"#, + ); + + check_assist( + remove_parentheses, + r#"fn x() -> u8 { { [$0({ 0 } + 1)] } }"#, + r#"fn x() -> u8 { { [{ 0 } + 1] } }"#, + ); + } + + #[test] + fn remove_parens_return_dot_f() { + check_assist( + remove_parentheses, + r#"fn f() { $0(return).f() }"#, + r#"fn f() { return.f() }"#, + ); + } + + #[test] + fn remove_parens_prefix_then_return_something() { + check_assist( + remove_parentheses, + r#"fn f() { &$0(return ()) }"#, + r#"fn f() { &return () }"#, + ); + } + + #[test] + fn remove_parens_double_paren_stmt() { + check_assist( + remove_parentheses, + r#"fn x() -> u8 { $0(({ 0 } + 1)) }"#, + r#"fn x() -> u8 { ({ 0 } + 1) }"#, + ); + + check_assist( + remove_parentheses, + r#"fn x() -> u8 { (($0{ 0 } + 1)) }"#, + r#"fn x() -> u8 { ({ 0 } + 1) }"#, + ); + } + + #[test] + fn remove_parens_im_tired_of_naming_tests() { + check_assist( + remove_parentheses, + r#"fn f() { 2 + $0(return 2) }"#, + r#"fn f() { 2 + return 2 }"#, + ); + + check_assist_not_applicable(remove_parentheses, r#"fn f() { $0(return 2) + 2 }"#); + } +} diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_arith_op.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_arith_op.rs new file mode 100644 index 000000000000..f1ca35cafc3a --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs index 6fa15b28e4ef..a6693d7d790c 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs @@ -907,7 +907,34 @@ impl PartialEq for Foo { } #[test] - fn add_custom_impl_partial_eq_tuple_enum() { + fn add_custom_impl_partial_eq_single_variant_tuple_enum() { + check_assist( + replace_derive_with_manual_impl, + r#" +//- minicore: eq, derive +#[derive(Partial$0Eq)] +enum Foo { + Bar(String), +} +"#, + r#" +enum Foo { + Bar(String), +} + +impl PartialEq for Foo { + $0fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::Bar(l0), Self::Bar(r0)) => l0 == r0, + } + } +} +"#, + ) + } + + #[test] + fn add_custom_impl_partial_eq_partial_tuple_enum() { check_assist( replace_derive_with_manual_impl, r#" @@ -936,6 +963,99 @@ impl PartialEq for Foo { ) } + #[test] + fn add_custom_impl_partial_eq_tuple_enum() { + check_assist( + replace_derive_with_manual_impl, + r#" +//- minicore: eq, derive +#[derive(Partial$0Eq)] +enum Foo { + Bar(String), + Baz(i32), +} +"#, + r#" +enum Foo { + Bar(String), + Baz(i32), +} + +impl PartialEq for Foo { + $0fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::Bar(l0), Self::Bar(r0)) => l0 == r0, + (Self::Baz(l0), Self::Baz(r0)) => l0 == r0, + _ => false, + } + } +} +"#, + ) + } + + #[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( @@ -1112,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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_or_with_or_else.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_or_with_or_else.rs index 77382056c183..f0ed3c4fe6f5 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_or_with_or_else.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs index c177adc7a10d..6626ce079599 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unnecessary_async.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unnecessary_async.rs index 043988322533..7f612c2a142c 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unnecessary_async.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unqualify_method_call.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unqualify_method_call.rs new file mode 100644 index 000000000000..e9d4e270cdcf --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unqualify_method_call.rs @@ -0,0 +1,211 @@ +use syntax::{ + ast::{self, make, AstNode, HasArgList}, + TextRange, +}; + +use crate::{AssistContext, AssistId, AssistKind, Assists}; + +// Assist: unqualify_method_call +// +// 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 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()?; + + 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("unqualify_method_call", AssistKind::RefactorRewrite), + "Unqualify 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 unqualify_method_call_simple() { + check_assist( + unqualify_method_call, + 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 unqualify_method_call_trait() { + check_assist( + unqualify_method_call, + r#" +//- minicore: add +fn f() { ::$0add(2, 2); }"#, + r#" +fn f() { 2.add(2); }"#, + ); + + check_assist( + unqualify_method_call, + r#" +//- minicore: add +fn f() { core::ops::Add::$0add(2, 2); }"#, + r#" +fn f() { 2.add(2); }"#, + ); + + check_assist( + unqualify_method_call, + r#" +//- minicore: add +use core::ops::Add; +fn f() { <_>::$0add(2, 2); }"#, + r#" +use core::ops::Add; +fn f() { 2.add(2); }"#, + ); + } + + #[test] + fn unqualify_method_call_single_arg() { + check_assist( + unqualify_method_call, + 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 unqualify_method_call_parens() { + check_assist( + unqualify_method_call, + 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 unqualify_method_call_doesnt_apply_with_cursor_not_on_path() { + check_assist_not_applicable( + unqualify_method_call, + r#" +//- minicore: add +fn f() { core::ops::Add::add(2,$0 2); }"#, + ); + } + + #[test] + fn unqualify_method_call_doesnt_apply_with_no_self() { + check_assist_not_applicable( + unqualify_method_call, + r#" +struct S; +impl S { fn assoc(S: S, S: S) {} } +fn f() { S::assoc$0(S, S); }"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unwrap_block.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unwrap_block.rs index 7969a491822d..53cdac03a335 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unwrap_block.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/unwrap_block.rs @@ -37,7 +37,8 @@ pub(crate) fn unwrap_block(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option parent = parent.ancestors().find(|it| ast::MatchExpr::can_cast(it.kind()))? } - if matches!(parent.kind(), SyntaxKind::STMT_LIST | SyntaxKind::EXPR_STMT) { + if matches!(parent.kind(), SyntaxKind::STMT_LIST | SyntaxKind::EXPR_STMT | SyntaxKind::LET_STMT) + { return acc.add(assist_id, assist_label, target, |builder| { builder.replace(block.syntax().text_range(), update_expr_string(block.to_string())); }); @@ -713,6 +714,50 @@ fn main() -> i32 { return 3; 5 } +"#, + ); + } + + #[test] + fn unwrap_block_in_let_initializers() { + // https://github.com/rust-lang/rust-analyzer/issues/13679 + check_assist( + unwrap_block, + r#" +fn main() { + let x = {$0 + bar + }; +} +"#, + r#" +fn main() { + let x = bar; +} +"#, + ); + } + + #[test] + fn unwrap_if_in_let_initializers() { + // https://github.com/rust-lang/rust-analyzer/issues/13679 + check_assist( + unwrap_block, + r#" +fn main() { + let a = 1; + let x = if a - 1 == 0 {$0 + foo + } else { + bar + }; +} +"#, + r#" +fn main() { + let a = 1; + let x = foo; +} "#, ); } diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs b/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs index 387cc6314282..7813c9f9cbe8 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs +++ b/src/tools/rust-analyzer/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 move_format_string_arg; mod generate_constant; mod generate_default_from_enum_variant; mod generate_default_from_new; @@ -159,12 +159,14 @@ 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; mod merge_imports; mod merge_match_arms; mod move_bounds; + mod move_const_to_impl; mod move_guard; mod move_module_to_file; mod move_to_mod_rs; @@ -178,12 +180,14 @@ mod handlers { mod remove_dbg; mod remove_mut; mod remove_unused_param; + mod remove_parentheses; mod reorder_fields; mod reorder_impl_items; mod replace_try_expr_with_match; mod replace_derive_with_manual_impl; mod replace_if_let_with_match; mod replace_or_with_or_else; + mod replace_arith_op; mod introduce_named_generic; mod replace_let_with_if_let; mod replace_qualified_name_with_use; @@ -198,6 +202,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] { @@ -228,6 +233,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, @@ -247,6 +253,7 @@ mod handlers { generate_from_impl_for_enum::generate_from_impl_for_enum, generate_function::generate_function, generate_impl::generate_impl, + generate_impl::generate_trait_impl, generate_is_empty_from_len::generate_is_empty_from_len, generate_new::generate_new, inline_call::inline_call, @@ -254,13 +261,14 @@ 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, merge_imports::merge_imports, merge_match_arms::merge_match_arms, move_bounds::move_bounds_to_where_clause, - move_format_string_arg::move_format_string_arg, + move_const_to_impl::move_const_to_impl, move_guard::move_arm_cond_to_match_guard, move_guard::move_guard_to_arm_body, move_module_to_file::move_module_to_file, @@ -277,6 +285,7 @@ mod handlers { remove_dbg::remove_dbg, remove_mut::remove_mut, remove_unused_param::remove_unused_param, + remove_parentheses::remove_parentheses, reorder_fields::reorder_fields, reorder_impl_items::reorder_impl_items, replace_try_expr_with_match::replace_try_expr_with_match, @@ -288,6 +297,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_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, @@ -297,6 +309,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/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs b/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs index 92ced27c78ae..fca268a1f0b2 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-assists/src/tests/generated.rs b/src/tools/rust-analyzer/crates/ide-assists/src/tests/generated.rs index c09317572acf..006ae4b30341 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/tests/generated.rs +++ b/src/tools/rust-analyzer/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!("{var} {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!("{var} {}"$0, x + 1); +} +"#####, + ) +} + #[test] fn doctest_extract_function() { check_doc_test( @@ -1249,8 +1280,8 @@ fn doctest_generate_impl() { check_doc_test( "generate_impl", r#####" -struct Ctx { - data: T,$0 +struct Ctx$0 { + data: T, } "#####, r#####" @@ -1341,6 +1372,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( @@ -1417,6 +1469,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( @@ -1654,31 +1739,29 @@ fn apply(f: F, x: T) -> U where F: FnOnce(T) -> U { } #[test] -fn doctest_move_format_string_arg() { +fn doctest_move_const_to_impl() { check_doc_test( - "move_format_string_arg", + "move_const_to_impl", r#####" -macro_rules! format_args { - ($lit:literal $(tt:tt)*) => { 0 }, -} -macro_rules! print { - ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); -} +struct S; +impl S { + fn foo() -> usize { + /// The answer. + const C$0: usize = 42; -fn main() { - print!("{x + 1}$0"); + C * C + } } "#####, r#####" -macro_rules! format_args { - ($lit:literal $(tt:tt)*) => { 0 }, -} -macro_rules! print { - ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); -} +struct S; +impl S { + /// The answer. + const C: usize = 42; -fn main() { - print!("{}"$0, x + 1); + fn foo() -> usize { + Self::C * Self::C + } } "#####, ) @@ -1928,6 +2011,23 @@ impl Walrus { ) } +#[test] +fn doctest_remove_parentheses() { + check_doc_test( + "remove_parentheses", + r#####" +fn main() { + _ = $0(2) + 2; +} +"#####, + r#####" +fn main() { + _ = 2 + 2; +} +"#####, + ) +} + #[test] fn doctest_remove_unused_param() { check_doc_test( @@ -1999,6 +2099,57 @@ impl Foo for Bar { ) } +#[test] +fn doctest_replace_arith_with_checked() { + check_doc_test( + "replace_arith_with_checked", + r#####" +fn main() { + let x = 1 $0+ 2; +} +"#####, + r#####" +fn main() { + let x = 1.checked_add(2); +} +"#####, + ) +} + +#[test] +fn doctest_replace_arith_with_saturating() { + check_doc_test( + "replace_arith_with_saturating", + r#####" +fn main() { + let x = 1 $0+ 2; +} +"#####, + r#####" +fn main() { + let x = 1.saturating_add(2); +} +"#####, + ) +} + +#[test] +fn doctest_replace_arith_with_wrapping() { + check_doc_test( + "replace_arith_with_wrapping", + r#####" +fn main() { + let x = 1 $0+ 2; +} +"#####, + r#####" +fn main() { + let x = 1.wrapping_add(2); +} +"#####, + ) +} + #[test] fn doctest_replace_char_with_string() { check_doc_test( @@ -2415,6 +2566,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( diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/tests/sourcegen.rs b/src/tools/rust-analyzer/crates/ide-assists/src/tests/sourcegen.rs index 070b83d3c16b..b4f50c7fb26a 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/tests/sourcegen.rs +++ b/src/tools/rust-analyzer/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] @@ -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 }; @@ -175,7 +174,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 +189,6 @@ fn reveal_hash_comments(text: &str) -> String { it } }) - .map(|it| format!("{}\n", it)) + .map(|it| format!("{it}\n")) .collect() } diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs b/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs index 68c31b4f8e92..7add66064921 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs @@ -208,6 +208,23 @@ pub(crate) fn render_snippet(_cap: SnippetCap, node: &SyntaxNode, cursor: Cursor } } +/// Escapes text that should be rendered as-is, typically those that we're copy-pasting what the +/// users wrote. +/// +/// This function should only be used when the text doesn't contain snippet **AND** the text +/// wouldn't be included in a snippet. +pub(crate) fn escape_non_snippet(text: &mut String) { + // While we *can* escape `}`, we don't really have to in this specific case. We only need to + // escape it inside `${}` to disambiguate it from the ending token of the syntax, but after we + // escape every occurrence of `$`, we wouldn't have `${}` in the first place. + // + // This will break if the text contains snippet or it will be included in a snippet (hence doc + // comment). Compare `fn escape(buf)` in `render_snippet()` above, where the escaped text is + // included in a snippet. + stdx::replace(text, '\\', r"\\"); + stdx::replace(text, '$', r"\$"); +} + pub(crate) fn vis_offset(node: &SyntaxNode) -> TextSize { node.children_with_tokens() .find(|it| !matches!(it.kind(), WHITESPACE | COMMENT | ATTR)) @@ -417,35 +434,67 @@ pub(crate) fn find_impl_block_end(impl_def: ast::Impl, buf: &mut String) -> Opti Some(end) } -// Generates the surrounding `impl Type { }` including type and lifetime -// parameters +/// Generates the surrounding `impl Type { }` including type and lifetime +/// parameters. pub(crate) fn generate_impl_text(adt: &ast::Adt, code: &str) -> String { - generate_impl_text_inner(adt, None, code) + generate_impl_text_inner(adt, None, true, code) } -// Generates the surrounding `impl for Type { }` including type -// and lifetime parameters +/// Generates the surrounding `impl for Type { }` including type +/// and lifetime parameters, with `` appended to `impl`'s generic parameters' bounds. +/// +/// This is useful for traits like `PartialEq`, since `impl PartialEq for U` often requires `T: PartialEq`. pub(crate) fn generate_trait_impl_text(adt: &ast::Adt, trait_text: &str, code: &str) -> String { - generate_impl_text_inner(adt, Some(trait_text), code) + generate_impl_text_inner(adt, Some(trait_text), true, code) } -fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str) -> String { +/// Generates the surrounding `impl for Type { }` including type +/// and lifetime parameters, with `impl`'s generic parameters' bounds kept as-is. +/// +/// This is useful for traits like `From`, since `impl From for U` doesn't require `T: From`. +pub(crate) fn generate_trait_impl_text_intransitive( + adt: &ast::Adt, + trait_text: &str, + code: &str, +) -> String { + generate_impl_text_inner(adt, Some(trait_text), false, code) +} + +fn generate_impl_text_inner( + adt: &ast::Adt, + trait_text: Option<&str>, + trait_is_transitive: bool, + code: &str, +) -> String { // Ensure lifetime params are before type & const params let generic_params = adt.generic_param_list().map(|generic_params| { 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 + let ty_or_const_params = generic_params.type_or_const_params().map(|param| { 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(); - Some(ast::GenericParam::TypeParam(param)) + let mut bounds = + param.type_bound_list().map_or_else(Vec::new, |it| it.bounds().collect()); + if let Some(trait_) = trait_text { + // Add the current trait to `bounds` if the trait is transitive, + // meaning `impl Trait for U` requires `T: Trait`. + if trait_is_transitive { + bounds.push(make::type_bound(trait_)); + } + }; + // `{ty_param}: {bounds}` + let param = + make::type_param(param.name().unwrap(), make::type_bound_list(bounds)); + 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)) + ast::GenericParam::ConstParam(param) } } }); @@ -596,7 +645,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( @@ -607,7 +656,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( @@ -619,7 +668,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( @@ -630,7 +679,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/src/tools/rust-analyzer/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/src/tools/rust-analyzer/crates/ide-assists/src/utils/gen_trait_fn_body.rs index 6c87e66c134d..d4abb51259e9 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/utils/gen_trait_fn_body.rs +++ b/src/tools/rust-analyzer/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))) } @@ -516,10 +516,18 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let expr = match arms.len() { 0 => eq_check, - _ => { - if n_cases > arms.len() { + arms_len => { + // Generate the fallback arm when this enum has >1 variants. + // The fallback arm will be `_ => false,` if we've already gone through every case where the variants of self and other match, + // and `_ => std::mem::discriminant(self) == std::mem::discriminant(other),` otherwise. + if n_cases > 1 { let lhs = make::wildcard_pat().into(); - arms.push(make::match_arm(Some(lhs), None, eq_check)); + let rhs = if arms_len == n_cases { + make::expr_literal("false").into() + } else { + eq_check + }; + arms.push(make::match_arm(Some(lhs), None, rhs)); } let match_target = make::expr_tuple(vec![lhs_name, rhs_name]); diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs index 296dfc14250f..eb87d6c58262 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs +++ b/src/tools/rust-analyzer/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); } @@ -494,7 +494,7 @@ impl Completions { pattern_ctx, path_ctx, variant, - local_name.clone(), + local_name, None, )); } diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs index d9fe94cb44ee..bb950c76f883 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs +++ b/src/tools/rust-analyzer/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::>(), ) @@ -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/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/cfg.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/cfg.rs index 311060143b06..7ef4ff30b56c 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/cfg.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/lint.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/lint.rs index 967f6ddd9a83..818c3cfd5fe7 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute/lint.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/dot.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/dot.rs index 02004ff7b686..7c6e5e100f63 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/dot.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/env_vars.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/env_vars.rs index 09e95e53de63..1002be21131d 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/env_vars.rs +++ b/src/tools/rust-analyzer/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 + "# ), ); } @@ -112,7 +110,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 +127,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 +143,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/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs index 3192b21cfb2e..cfe4787f734d 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/fn_param.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/fn_param.rs index f0ecc595af33..d8b8a190eb84 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/fn_param.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/format_string.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/format_string.rs index 038bdb4279e0..5c46c5806e65 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/format_string.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs index 7384a3f2d80b..9a060857e9e4 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/src/tools/rust-analyzer/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; @@ -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() }); @@ -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(); @@ -279,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 => { @@ -310,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, @@ -322,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)), }; @@ -834,11 +845,10 @@ trait Test {{ struct T; impl Test for T {{ - {} - {} + {hint} + {next_sibling} }} -"#, - hint, next_sibling +"# ), &format!( r#" @@ -850,11 +860,10 @@ trait Test {{ struct T; impl Test for T {{ - {} - {} + {completed} + {next_sibling} }} -"#, - completed, next_sibling +"# ), ) }; @@ -894,10 +903,9 @@ struct T; impl Foo for T {{ // Comment #[bar] - {} + {hint} }} -"#, - hint +"# ), &format!( r#" @@ -911,10 +919,9 @@ struct T; impl Foo for T {{ // Comment #[bar] - {} + {completed} }} -"#, - completed +"# ), ) }; diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix.rs index b9bd47f7da50..f4f37d77d81f 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix.rs @@ -5,7 +5,7 @@ mod format_like; use hir::{Documentation, HasAttrs}; use ide_db::{imports::insert_use::ImportScope, ty_filter::TryEnum, SnippetCap}; use syntax::{ - ast::{self, AstNode, AstToken}, + ast::{self, make, AstNode, AstToken}, SyntaxKind::{EXPR_STMT, STMT_LIST}, TextRange, TextSize, }; @@ -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,46 +91,44 @@ 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 - let dot_receiver = include_references(dot_receiver); - let receiver_text = get_receiver_text(&dot_receiver, receiver_is_ambiguous_float_literal); + + let (dot_receiver, node_to_replace_with) = include_references(dot_receiver); + let receiver_text = + get_receiver_text(&node_to_replace_with, receiver_is_ambiguous_float_literal); let postfix_snippet = match build_postfix_snippet_builder(ctx, cap, &dot_receiver) { Some(it) => it, None => return, @@ -146,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); } @@ -155,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); @@ -166,21 +163,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); } } @@ -210,14 +207,35 @@ fn get_receiver_text(receiver: &ast::Expr, receiver_is_ambiguous_float_literal: text.replace('\\', "\\\\").replace('$', "\\$") } -fn include_references(initial_element: &ast::Expr) -> ast::Expr { +fn include_references(initial_element: &ast::Expr) -> (ast::Expr, ast::Expr) { let mut resulting_element = initial_element.clone(); - while let Some(parent_ref_element) = - resulting_element.syntax().parent().and_then(ast::RefExpr::cast) + + while let Some(field_expr) = resulting_element.syntax().parent().and_then(ast::FieldExpr::cast) { - resulting_element = ast::Expr::from(parent_ref_element); + resulting_element = ast::Expr::from(field_expr); } - resulting_element + + let mut new_element_opt = initial_element.clone(); + + 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; + } + + while let Some(parent_ref_element) = + resulting_element.syntax().parent().and_then(ast::RefExpr::cast) + { + resulting_element = ast::Expr::from(parent_ref_element); + + new_element_opt = make::expr_ref(new_element_opt, false); + } + } else { + // If we do not find any ref expressions, restore + // all the progress of tree climbing + resulting_element = initial_element.clone(); + } + + (resulting_element, new_element_opt) } fn build_postfix_snippet_builder<'ctx>( @@ -225,8 +243,7 @@ fn build_postfix_snippet_builder<'ctx>( cap: SnippetCap, receiver: &'ctx ast::Expr, ) -> Option Builder + 'ctx> { - let receiver_syntax = receiver.syntax(); - let receiver_range = ctx.sema.original_range_opt(receiver_syntax)?.range; + let receiver_range = ctx.sema.original_range_opt(receiver.syntax())?.range; if ctx.source_range().end() < receiver_range.start() { // This shouldn't happen, yet it does. I assume this might be due to an incorrect token mapping. return None; @@ -278,7 +295,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); } @@ -549,7 +566,7 @@ fn main() { ControlFlow::Break('\\\\') } ); check_edit_with_config( - config.clone(), + config, "break", r#" //- minicore: try @@ -578,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", @@ -616,22 +633,55 @@ fn main() { #[test] fn postfix_custom_snippets_completion_for_references() { + // https://github.com/rust-lang/rust-analyzer/issues/7929 + + let snippet = Snippet::new( + &[], + &["ok".into()], + &["Ok(${receiver})".into()], + "", + &[], + crate::SnippetScope::Expr, + ) + .unwrap(); + check_edit_with_config( - CompletionConfig { - snippets: vec![Snippet::new( - &[], - &["ok".into()], - &["Ok(${receiver})".into()], - "", - &[], - crate::SnippetScope::Expr, - ) - .unwrap()], - ..TEST_CONFIG - }, + CompletionConfig { snippets: vec![snippet.clone()], ..TEST_CONFIG }, + "ok", + r#"fn main() { &&42.o$0 }"#, + r#"fn main() { Ok(&&42) }"#, + ); + + check_edit_with_config( + CompletionConfig { snippets: vec![snippet.clone()], ..TEST_CONFIG }, "ok", r#"fn main() { &&42.$0 }"#, r#"fn main() { Ok(&&42) }"#, ); + + check_edit_with_config( + CompletionConfig { snippets: vec![snippet], ..TEST_CONFIG }, + "ok", + r#" +struct A { + a: i32, +} + +fn main() { + let a = A {a :1}; + &a.a.$0 +} + "#, + r#" +struct A { + a: i32, +} + +fn main() { + let a = A {a :1}; + Ok(&a.a) +} + "#, + ); } } diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix/format_like.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix/format_like.rs index b43bdb9ab9d1..dfcc78e92308 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/postfix/format_like.rs +++ b/src/tools/rust-analyzer/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,16 +76,29 @@ 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 { 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); + } + } + + #[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); } } diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs index 5d96fbd30a81..0521e735dedf 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs @@ -124,7 +124,12 @@ fn complete_fields( #[cfg(test)] mod tests { - use crate::tests::check_edit; + use ide_db::SnippetCap; + + use crate::{ + tests::{check_edit, check_edit_with_config, TEST_CONFIG}, + CompletionConfig, + }; #[test] fn literal_struct_completion_edit() { @@ -151,6 +156,66 @@ 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.clone(), + "Variant()", + r#" +enum Enum { + Variant(usize), +} + +impl Enum { + fn new(u: usize) -> Self { + Self::Va$0 + } +} +"#, + r#" +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 + } +} +"#, + ) + } + #[test] fn literal_struct_impl_self_completion() { check_edit( diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/snippet.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/snippet.rs index 66adb4286373..da1f0542d286 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/snippet.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/type.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/type.rs index 8f9db2f94c20..37849c251a48 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/type.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/context.rs b/src/tools/rust-analyzer/crates/ide-completion/src/context.rs index 9850813a0ce1..aa77f449530e 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/context.rs +++ b/src/tools/rust-analyzer/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,32 @@ 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 invalid 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; + } + + // 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 + // 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; + } + } + _ => {} + } + let AnalysisResult { analysis, expected: (expected_type, expected_name), diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/context/analysis.rs b/src/tools/rust-analyzer/crates/ide-completion/src/context/analysis.rs index c142a7305f9e..e34824e22eac 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/context/analysis.rs +++ b/src/tools/rust-analyzer/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) => { @@ -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) } @@ -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()); @@ -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/src/tools/rust-analyzer/crates/ide-completion/src/context/tests.rs b/src/tools/rust-analyzer/crates/ide-completion/src/context/tests.rs index 50845b3881f4..a654a5db5744 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/context/tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/item.rs b/src/tools/rust-analyzer/crates/ide-completion/src/item.rs index 27c3ccb35a1e..657eab5b1b83 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/item.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs index 9d0044e55f59..4b48ec6bc339 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/render.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render.rs index 86302cb0678f..e48d1aecd04f 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render.rs +++ b/src/tools/rust-analyzer/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()) { @@ -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/src/tools/rust-analyzer/crates/ide-completion/src/render/const_.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/const_.rs index 93ea825e0042..70b19988ca73 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/const_.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs index 376120846047..197592e78ce2 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/render/literal.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/literal.rs index 0c791ac570c5..64dab02f7c5c 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/literal.rs +++ b/src/tools/rust-analyzer/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, }, }; @@ -96,7 +96,7 @@ fn render( if !should_add_parens { kind = StructKind::Unit; } - let label = format_literal_label(&qualified_name, kind); + let label = format_literal_label(&qualified_name, kind, snippet_cap); let lookup = if qualified { format_literal_lookup(&short_qualified_name.to_string(), kind) } else { diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/render/macro_.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/macro_.rs index eabd0bd17d65..ffcad1185aa4 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/macro_.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/render/pattern.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/pattern.rs index c845ff21aaba..21b4bc2174be 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/pattern.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/render/pattern.rs @@ -33,7 +33,7 @@ pub(crate) fn render_struct_pat( let name = local_name.unwrap_or_else(|| strukt.name(ctx.db())); 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 label = format_literal_label(name.as_str(), kind, ctx.snippet_cap()); let lookup = format_literal_lookup(name.as_str(), kind); let pat = render_pat(&ctx, pattern_ctx, &escaped_name, kind, &visible_fields, fields_omitted)?; @@ -67,7 +67,7 @@ pub(crate) fn render_variant_pat( } _ => { let kind = variant.kind(ctx.db()); - let label = format_literal_label(name.as_str(), kind); + let label = format_literal_label(name.as_str(), kind, ctx.snippet_cap()); let lookup = format_literal_lookup(name.as_str(), kind); let pat = render_pat( &ctx, diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/render/type_alias.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/type_alias.rs index de919429f2f9..fbe120d2ac94 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/type_alias.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/render/union_literal.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/union_literal.rs index 54e97dd57ba8..1b09ad1731f9 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/union_literal.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/render/union_literal.rs @@ -24,7 +24,7 @@ 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 label = format_literal_label(&name.to_smol_str(), StructKind::Record, ctx.snippet_cap()); let lookup = format_literal_lookup(&name.to_smol_str(), StructKind::Record); let mut item = CompletionItem::new( CompletionItemKind::SymbolKind(SymbolKind::Union), @@ -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/src/tools/rust-analyzer/crates/ide-completion/src/render/variant.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/variant.rs index 24e6abdc9ad6..55c55725be4f 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/variant.rs +++ b/src/tools/rust-analyzer/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)) @@ -35,8 +38,8 @@ pub(crate) fn render_record_lit( }); RenderedLiteral { - literal: format!("{} {{ {} }}", path, completions), - detail: format!("{} {{ {} }}", path, types), + literal: format!("{path} {{ {completions} }}"), + detail: format!("{path} {{ {types} }}"), } } @@ -48,6 +51,9 @@ pub(crate) fn render_tuple_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, _), f| { if snippet_cap.is_some() { f(&format_args!("${{{}:()}}", idx + 1)) @@ -59,8 +65,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})"), } } @@ -87,7 +93,14 @@ pub(crate) fn visible_fields( } /// Format a struct, etc. literal option for display in the completions menu. -pub(crate) fn format_literal_label(name: &str, kind: StructKind) -> SmolStr { +pub(crate) fn format_literal_label( + name: &str, + kind: StructKind, + snippet_cap: Option, +) -> SmolStr { + if snippet_cap.is_none() { + return name.into(); + } match kind { StructKind::Tuple => SmolStr::from_iter([name, "(…)"]), StructKind::Record => SmolStr::from_iter([name, " {…}"]), diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/snippet.rs b/src/tools/rust-analyzer/crates/ide-completion/src/snippet.rs index f3b8eae4fe8c..343719c53694 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/snippet.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs index 9e2beb9ee328..abe14e48e223 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs +++ b/src/tools/rust-analyzer/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) } @@ -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())); @@ -183,12 +183,12 @@ 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) .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/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs index 1578ba2c3771..4e60820dd6d6 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs index 8e26d889f9b6..043f552bd8a4 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs index 409413c1dcdb..3ef2a7c942bc 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/item_list.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item_list.rs index 8ed6cb3cf867..b62b988885d0 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/item_list.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item_list.rs @@ -1,10 +1,10 @@ //! 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)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}{ra_fixture}")); expect.assert_eq(&actual) } @@ -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; +} +", + ) +} diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/pattern.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/pattern.rs index db8bef66405e..ad9254e7f2ec 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/pattern.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/predicate.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/predicate.rs index a8676e2f2478..2656a4d545e6 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/predicate.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs index 033dc99c26cf..cad4af4937de 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs +++ b/src/tools/rust-analyzer/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,82 @@ 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![""], + ) +} diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/type_pos.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/type_pos.rs index f0b7726c51d9..c3f4fb4d1817 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/type_pos.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/assists.rs b/src/tools/rust-analyzer/crates/ide-db/src/assists.rs index da23763dc292..8c6c1c44aa70 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/assists.rs +++ b/src/tools/rust-analyzer/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/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/rust-analyzer/crates/ide-db/src/imports/import_assets.rs b/src/tools/rust-analyzer/crates/ide-db/src/imports/import_assets.rs index 40a6a3e8970f..994d48385a0f 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/imports/import_assets.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/imports/insert_use/tests.rs b/src/tools/rust-analyzer/crates/ide-db/src/imports/insert_use/tests.rs index 59673af3204e..b92e367f7e12 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/imports/insert_use/tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/imports/merge_imports.rs b/src/tools/rust-analyzer/crates/ide-db/src/imports/merge_imports.rs index 371d642c15d1..27b6321f3a7a 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/imports/merge_imports.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/lib.rs b/src/tools/rust-analyzer/crates/ide-db/src/lib.rs index e0bc0f89f0a1..156bbb634e4d 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/rename.rs b/src/tools/rust-analyzer/crates/ide-db/src/rename.rs index 49b81265ea5b..cd4a7e1554cd 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/rename.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/search.rs b/src/tools/rust-analyzer/crates/ide-db/src/search.rs index aa5d7e9beb54..b2b0e49085c8 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/search.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/symbol_index.rs b/src/tools/rust-analyzer/crates/ide-db/src/symbol_index.rs index bfb003127710..c054cc159796 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/symbol_index.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/format_string_exprs.rs b/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/format_string_exprs.rs index 313346ee1315..fcef71fb74e7 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/format_string_exprs.rs +++ b/src/tools/rust-analyzer/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); @@ -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 }; @@ -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 }"]], @@ -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 diff --git a/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/node_ext.rs b/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/node_ext.rs index 39710b8f13eb..a34dc1b69507 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/node_ext.rs +++ b/src/tools/rust-analyzer/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) => { @@ -252,6 +255,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 +299,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 +317,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,10 +330,10 @@ 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(_) => cb(expr), + | ast::Expr::YieldExpr(_) + | ast::Expr::YeetExpr(_) => cb(expr), } } @@ -447,7 +452,7 @@ pub fn parse_tt_as_comma_sep_paths(input: ast::TokenTree) -> Option it.path(), diff --git a/src/tools/rust-analyzer/crates/ide-db/src/test_data/test_symbol_index_collection.txt b/src/tools/rust-analyzer/crates/ide-db/src/test_data/test_symbol_index_collection.txt index 2f531ca0c709..8c11408dec5d 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/test_data/test_symbol_index_collection.txt +++ b/src/tools/rust-analyzer/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, diff --git a/src/tools/rust-analyzer/crates/ide-db/src/tests/sourcegen_lints.rs b/src/tools/rust-analyzer/crates/ide-db/src/tests/sourcegen_lints.rs index 5042f6d815a1..c7d5f3613d4b 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/tests/sourcegen_lints.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs index 0c92e706b391..10e637979f2c 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs @@ -37,35 +37,13 @@ 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( r#" fn foo() { 'a: loop { - try { + async { break; //^^^^^ error: break outside of loop break 'a; @@ -87,7 +65,7 @@ fn foo() { r#" fn foo() { 'a: loop { - try { + || { break; //^^^^^ error: break outside of loop break 'a; @@ -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( diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs index 3034295196b4..e8df6dcf285d 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs index 5f8b3e543b94..c5db8c3741b8 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/missing_fields.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/missing_fields.rs index 7f140eb6a74a..43af4d4f16aa 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/missing_fields.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/missing_fields.rs @@ -128,9 +128,9 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::MissingFields) -> Option u32; // Safe intrinsic pub fn floorf32(x: f32) -> f32; // Unsafe intrinsic } diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs index d8f2a9de9818..8da04e628d67 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs +++ b/src/tools/rust-analyzer/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()?.ident_token()?.text()), + make::name(record_expr_field.field_name()?.ident_token()?.text()), make::ty(&new_field_type.display_source_code(sema.db, module.into()).ok()?), ); @@ -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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/private_assoc_item.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/private_assoc_item.rs new file mode 100644 index 000000000000..b363a516dd1c --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/private_field.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/private_field.rs new file mode 100644 index 000000000000..e630ae36866d --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/private_field.rs @@ -0,0 +1,68 @@ +use crate::{Diagnostic, DiagnosticsContext}; + +// Diagnostic: private-field +// +// 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( + "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_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( + 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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/type_mismatch.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/type_mismatch.rs index 62c69f90baa4..2adae165e4d2 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/type_mismatch.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs index c626932f196b..be70f0ac4f79 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs index 87531f4acfb7..1a5efff2c0c6 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_module.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_module.rs index b8f2a9e94a40..91395f1d841a 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_module.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs index 23818d883f73..b2ed19104e27 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs index d81e36a1f863..64ba08ac883b 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs @@ -37,6 +37,8 @@ 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; pub(crate) mod unimplemented_builtin_macro; @@ -218,7 +220,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()) }), ); @@ -227,7 +229,7 @@ pub fn diagnostics( 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); + handlers::json_is_not_rust::json_in_items(&sema, &mut res, file_id, &node, config); } let module = sema.to_module_def(file_id); @@ -254,6 +256,8 @@ 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), AnyDiagnostic::UnimplementedBuiltinMacro(d) => handlers::unimplemented_builtin_macro::unimplemented_builtin_macro(&ctx, &d), diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests.rs index 729619cfde03..afa641c733eb 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests.rs +++ b/src/tools/rust-analyzer/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) { @@ -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/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests/sourcegen.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests/sourcegen.rs index ec6558a46efb..9e7fcfc590b7 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests/sourcegen.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/tests/sourcegen.rs @@ -11,7 +11,7 @@ fn sourcegen_diagnostic_docs() { diagnostics.into_iter().map(|it| it.to_string()).collect::>().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)] @@ -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/src/tools/rust-analyzer/crates/ide-ssr/src/parsing.rs b/src/tools/rust-analyzer/crates/ide-ssr/src/parsing.rs index f6220b928a4c..d78d009681a6 100644 --- a/src/tools/rust-analyzer/crates/ide-ssr/src/parsing.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-ssr/src/tests.rs b/src/tools/rust-analyzer/crates/ide-ssr/src/tests.rs index 1ecb7aa9aa70..61698fca80fe 100644 --- a/src/tools/rust-analyzer/crates/ide-ssr/src/tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/call_hierarchy.rs b/src/tools/rust-analyzer/crates/ide/src/call_hierarchy.rs index 5a8cda8fb3dd..48bcd37b62c6 100644 --- a/src/tools/rust-analyzer/crates/ide/src/call_hierarchy.rs +++ b/src/tools/rust-analyzer/crates/ide/src/call_hierarchy.rs @@ -57,7 +57,8 @@ pub(crate) fn incoming_calls( .flat_map(|func| func.usages(sema).all()); for (_, references) in references { - let references = references.into_iter().map(|FileReference { name, .. }| name); + let references = + references.iter().filter_map(|FileReference { name, .. }| name.as_name_ref()); for name in references { // This target is the containing function let nav = sema.ancestors_with_macros(name.syntax().clone()).find_map(|node| { @@ -457,4 +458,28 @@ fn caller$0() { expect![[]], ); } + + #[test] + fn test_trait_method_call_hierarchy() { + check_hierarchy( + r#" +trait T1 { + fn call$0ee(); +} + +struct S1; + +impl T1 for S1 { + fn callee() {} +} + +fn caller() { + S1::callee(); +} +"#, + expect![["callee Function FileId(0) 15..27 18..24"]], + expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], + expect![[]], + ); + } } diff --git a/src/tools/rust-analyzer/crates/ide/src/doc_links.rs b/src/tools/rust-analyzer/crates/ide/src/doc_links.rs index d96827326cfd..b4a7f2b918a4 100644 --- a/src/tools/rust-analyzer/crates/ide/src/doc_links.rs +++ b/src/tools/rust-analyzer/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; @@ -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)) } @@ -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/src/tools/rust-analyzer/crates/ide/src/doc_links/intra_doc_links.rs b/src/tools/rust-analyzer/crates/ide/src/doc_links/intra_doc_links.rs index 1df9aaae281e..13088bdc3b30 100644 --- a/src/tools/rust-analyzer/crates/ide/src/doc_links/intra_doc_links.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/doc_links/tests.rs b/src/tools/rust-analyzer/crates/ide/src/doc_links/tests.rs index c6bfb6b9d097..104181a33e68 100644 --- a/src/tools/rust-analyzer/crates/ide/src/doc_links/tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs b/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs index 93252339cd4a..418043d67981 100644 --- a/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/extend_selection.rs b/src/tools/rust-analyzer/crates/ide/src/extend_selection.rs index 45f1fd74841c..9f78c75e90aa 100644 --- a/src/tools/rust-analyzer/crates/ide/src/extend_selection.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/goto_declaration.rs b/src/tools/rust-analyzer/crates/ide/src/goto_declaration.rs index 926292c9b3ce..c7130a2a4bb0 100644 --- a/src/tools/rust-analyzer/crates/ide/src/goto_declaration.rs +++ b/src/tools/rust-analyzer/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, @@ -32,25 +36,37 @@ 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 } }; - 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,89 @@ 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: () = (); +} +"#, + ); + } + + #[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 }; +} +"#, + ); + } } diff --git a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs b/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs index 43f7a529bc29..73fd518a9ef0 100644 --- a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/goto_implementation.rs b/src/tools/rust-analyzer/crates/ide/src/goto_implementation.rs index b3f711b6b88c..190ab80ba0ff 100644 --- a/src/tools/rust-analyzer/crates/ide/src/goto_implementation.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs b/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs index 540a115832d3..55f8779eed7d 100644 --- a/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs +++ b/src/tools/rust-analyzer/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 @@ -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( diff --git a/src/tools/rust-analyzer/crates/ide/src/hover.rs b/src/tools/rust-analyzer/crates/ide/src/hover.rs index 838fb18c3d59..b214fa12a4fe 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover.rs +++ b/src/tools/rust-analyzer/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,67 @@ 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{markup}", acc.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 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 = + 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( @@ -269,6 +283,7 @@ fn hover_type_fallback( }; let res = render::type_info(sema, config, &expr_or_pat)?; + let range = sema .original_range_opt(&node) .map(|frange| frange.range) diff --git a/src/tools/rust-analyzer/crates/ide/src/hover/render.rs b/src/tools/rust-analyzer/crates/ide/src/hover/render.rs index d109c0769194..47257f0bfad0 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover/render.rs +++ b/src/tools/rust-analyzer/crates/ide/src/hover/render.rs @@ -2,7 +2,9 @@ use std::fmt::Display; use either::Either; -use hir::{AsAssocItem, AttributeTemplate, HasAttrs, HasSource, HirDisplay, Semantics, TypeInfo}; +use hir::{ + Adt, AsAssocItem, AttributeTemplate, HasAttrs, HasSource, HirDisplay, Semantics, TypeInfo, +}; use ide_db::{ base_db::SourceDatabase, defs::Definition, @@ -14,7 +16,9 @@ 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 +254,50 @@ 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, + 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 + // 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 + 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)); + 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()) { @@ -342,15 +390,35 @@ pub(super) fn definition( let mod_path = definition_mod_path(db, &def); let (label, docs) = match def { Definition::Macro(it) => label_and_docs(db, it), - Definition::Field(it) => label_and_docs(db, it), + Definition::Field(it) => label_and_layout_info_and_docs(db, it, |&it| { + let var_def = it.parent_def(db); + let id = it.index(); + let layout = it.layout(db).ok()?; + let offset = match var_def { + hir::VariantDef::Struct(s) => Adt::from(s) + .layout(db) + .ok() + .map(|layout| format!(", offset = {}", layout.fields.offset(id).bytes())), + _ => None, + }; + Some(format!( + "size = {}, align = {}{}", + layout.size.bytes(), + layout.align.abi.bytes(), + offset.as_deref().unwrap_or_default() + )) + }), Definition::Module(it) => label_and_docs(db, it), Definition::Function(it) => label_and_docs(db, it), - Definition::Adt(it) => label_and_docs(db, it), + Definition::Adt(it) => label_and_layout_info_and_docs(db, it, |&it| { + let layout = it.layout(db).ok()?; + Some(format!("size = {}, align = {}", layout.size.bytes(), layout.align.abi.bytes())) + }), 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 @@ -359,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(); @@ -415,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, @@ -443,6 +511,25 @@ where (label, docs) } +fn label_and_layout_info_and_docs( + db: &RootDatabase, + def: D, + value_extractor: E, +) -> (String, Option) +where + D: HasAttrs + HirDisplay, + E: Fn(&D) -> Option, + V: Display, +{ + let label = if let Some(value) = value_extractor(&def) { + format!("{} // {value}", def.display(db)) + } else { + def.display(db).to_string() + }; + let docs = def.attrs(db).docs(); + (label, docs) +} + fn label_value_and_docs( db: &RootDatabase, def: D, @@ -454,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() }; @@ -518,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/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs b/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs index eb997e6fef83..c7f241f2fea6 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs +++ b/src/tools/rust-analyzer/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) } @@ -522,6 +522,27 @@ fn main() { } ); } +#[test] +fn hover_field_offset() { + // Hovering over the field when instantiating + check( + r#" +struct Foo { fiel$0d_a: u8, field_b: i32, field_c: i16 } +"#, + expect![[r#" + *field_a* + + ```rust + test::Foo + ``` + + ```rust + field_a: u8 // size = 1, align = 1, offset = 4 + ``` + "#]], + ); +} + #[test] fn hover_shows_struct_field_info() { // Hovering over the field when instantiating @@ -534,16 +555,16 @@ fn main() { } "#, expect![[r#" - *field_a* + *field_a* - ```rust - test::Foo - ``` + ```rust + test::Foo + ``` - ```rust - field_a: u32 - ``` - "#]], + ```rust + field_a: u32 // size = 4, align = 4, offset = 0 + ``` + "#]], ); // Hovering over the field in the definition @@ -556,16 +577,16 @@ fn main() { } "#, expect![[r#" - *field_a* + *field_a* - ```rust - test::Foo - ``` + ```rust + test::Foo + ``` - ```rust - field_a: u32 - ``` - "#]], + ```rust + field_a: u32 // size = 4, align = 4, offset = 0 + ``` + "#]], ); } @@ -1508,30 +1529,30 @@ struct Bar; fn foo() { let bar = Ba$0r; } "#, - expect![[r##" - *Bar* + expect![[r#" + *Bar* - ```rust - test - ``` + ```rust + test + ``` - ```rust - struct Bar - ``` + ```rust + struct Bar // size = 0, align = 1 + ``` - --- + --- - This is an example - multiline doc + This is an example + multiline doc - # Example + # Example - ``` - let five = 5; + ``` + let five = 5; - assert_eq!(6, my_crate::add_one(5)); - ``` - "##]], + assert_eq!(6, my_crate::add_one(5)); + ``` + "#]], ); } @@ -1545,20 +1566,20 @@ struct Bar; fn foo() { let bar = Ba$0r; } "#, expect![[r#" - *Bar* + *Bar* - ```rust - test - ``` + ```rust + test + ``` - ```rust - struct Bar - ``` + ```rust + struct Bar // size = 0, align = 1 + ``` - --- + --- - bar docs - "#]], + bar docs + "#]], ); } @@ -1574,22 +1595,22 @@ struct Bar; fn foo() { let bar = Ba$0r; } "#, expect![[r#" - *Bar* + *Bar* - ```rust - test - ``` + ```rust + test + ``` - ```rust - struct Bar - ``` + ```rust + struct Bar // size = 0, align = 1 + ``` - --- + --- - bar docs 0 - bar docs 1 - bar docs 2 - "#]], + bar docs 0 + bar docs 1 + bar docs 2 + "#]], ); } @@ -1602,20 +1623,20 @@ pub struct Foo; pub struct B$0ar "#, expect![[r#" - *Bar* + *Bar* - ```rust - test - ``` + ```rust + test + ``` - ```rust - pub struct Bar - ``` + ```rust + pub struct Bar // size = 0, align = 1 + ``` - --- + --- - [external](https://www.google.com) - "#]], + [external](https://www.google.com) + "#]], ); } @@ -1629,20 +1650,20 @@ pub struct Foo; pub struct B$0ar "#, expect![[r#" - *Bar* + *Bar* - ```rust - test - ``` + ```rust + test + ``` - ```rust - pub struct Bar - ``` + ```rust + pub struct Bar // size = 0, align = 1 + ``` - --- + --- - [baz](Baz) - "#]], + [baz](Baz) + "#]], ); } @@ -2960,7 +2981,7 @@ fn main() { ``` ```rust - f: i32 + f: i32 // size = 4, align = 4, offset = 0 ``` "#]], ); @@ -3636,6 +3657,163 @@ enum E { #[test] fn hover_const_eval() { + check( + r#" +trait T { + const B: bool = false; +} +impl T for <()> { + /// true + const B: bool = true; +} +fn main() { + <()>::B$0; +} +"#, + expect![[r#" + *B* + + ```rust + test + ``` + + ```rust + const B: bool = true + ``` + + --- + + true + "#]], + ); + + check( + r#" +struct A { + i: i32 +}; + +trait T { + const AA: A = A { + i: 1 + }; +} +impl T for i32 { + const AA: A = A { + i: 2 + } +} +fn main() { + ::AA$0; +} +"#, + expect![[r#" + *AA* + + ```rust + test + ``` + + ```rust + const AA: A = A { + i: 2 + } + ``` + "#]], + ); + + check( + r#" +trait T { + /// false + const B: bool = false; +} +impl T for () { + /// true + const B: bool = true; +} +fn main() { + T::B$0; +} +"#, + expect![[r#" + *B* + + ```rust + test + ``` + + ```rust + const B: bool = false + ``` + + --- + + false + "#]], + ); + + check( + r#" +trait T { + /// false + const B: bool = false; +} +impl T for () { +} +fn main() { + <()>::B$0; +} +"#, + expect![[r#" + *B* + + ```rust + test + ``` + + ```rust + const B: bool = false + ``` + + --- + + false + "#]], + ); + + check( + r#" +trait T { + /// false + const B: bool = false; +} +impl T for () { + /// true + const B: bool = true; +} +impl T for i32 {} +fn main() { + ::B$0; +} +"#, + expect![[r#" + *B* + + ```rust + test + ``` + + ```rust + const B: bool = false + ``` + + --- + + false + "#]], + ); + // show hex for <10 check( r#" @@ -3901,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( @@ -4203,20 +4412,20 @@ pub fn gimme() -> theitem::TheItem { } "#, expect![[r#" - *[`TheItem`]* + *[`TheItem`]* - ```rust - test::theitem - ``` + ```rust + test::theitem + ``` - ```rust - pub struct TheItem - ``` + ```rust + pub struct TheItem // size = 0, align = 1 + ``` - --- + --- - This is the item. Cool! - "#]], + This is the item. Cool! + "#]], ); } @@ -4351,20 +4560,20 @@ mod string { } "#, expect![[r#" - *String* + *String* - ```rust - main - ``` + ```rust + main + ``` - ```rust - struct String - ``` + ```rust + struct String // size = 0, align = 1 + ``` - --- + --- - Custom `String` type. - "#]], + Custom `String` type. + "#]], ) } @@ -5025,7 +5234,7 @@ foo_macro!( ``` ```rust - pub struct Foo + pub struct Foo // size = 0, align = 1 ``` --- @@ -5040,7 +5249,7 @@ fn hover_intra_in_attr() { check( r#" #[doc = "Doc comment for [`Foo$0`]"] -pub struct Foo; +pub struct Foo(i32); "#, expect![[r#" *[`Foo`]* @@ -5050,7 +5259,7 @@ pub struct Foo; ``` ```rust - pub struct Foo + pub struct Foo // size = 4, align = 4 ``` --- @@ -5155,6 +5364,28 @@ enum Enum { ); } +#[test] +fn hover_record_variant_field() { + check( + r#" +enum Enum { + RecordV { field$0: u32 } +} +"#, + expect![[r#" + *field* + + ```rust + test::RecordV + ``` + + ```rust + field: u32 // size = 4, align = 4 + ``` + "#]], + ); +} + #[test] fn hover_trait_impl_assoc_item_def_doc_forwarding() { check( @@ -5307,3 +5538,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 + .. + ``` + "#]], + ); +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs index 37384c4e7e07..48a7bbfecffa 100644 --- a/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs @@ -1,31 +1,42 @@ -use std::fmt; +use std::{ + fmt::{self, Write}, + mem::take, +}; use either::Either; -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, -}; +use hir::{known, HasVisibility, HirDisplay, HirWrite, ModuleDef, ModuleDefId, Semantics}; +use ide_db::{base_db::FileRange, famous_defs::FamousDefs, RootDatabase}; use itertools::Itertools; -use stdx::to_lower_snake_case; +use stdx::never; use syntax::{ - ast::{self, AstNode, HasArgList, HasGenericParams, HasName, UnaryOp}, - match_ast, Direction, NodeOrToken, SmolStr, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, - TextSize, T, + ast::{self, AstNode}, + match_ast, NodeOrToken, SyntaxNode, TextRange, TextSize, }; -use crate::FileId; +use crate::{navigation_target::TryToNav, FileId}; + +mod closing_brace; +mod implicit_static; +mod fn_lifetime_fn; +mod closure_ret; +mod adjustment; +mod chaining; +mod param_name; +mod binding_mode; +mod bind_pat; +mod discriminant; #[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, + pub adjustment_hints_mode: AdjustmentHintsMode, + pub adjustment_hints_hide_outside_unsafe: bool, pub closure_return_type_hints: ClosureReturnTypeHints, pub binding_mode_hints: bool, pub lifetime_elision_hints: LifetimeElisionHints, @@ -43,6 +54,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, @@ -57,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, @@ -65,10 +91,13 @@ pub enum InlayKind { ClosureReturnTypeHint, GenericParamListHint, AdjustmentHint, - AdjustmentHintClosingParenthesis, + AdjustmentHintPostfix, LifetimeHint, ParameterHint, TypeHint, + DiscriminantHint, + OpeningParenthesis, + ClosingParenthesis, } #[derive(Debug)] @@ -86,6 +115,7 @@ pub enum InlayTooltip { HoverOffset(FileId, TextSize), } +#[derive(Default)] pub struct InlayHintLabel { pub parts: Vec, } @@ -169,6 +199,101 @@ impl fmt::Debug for InlayHintLabelPart { } } +#[derive(Debug)] +struct InlayHintLabelBuilder<'a> { + db: &'a RootDatabase, + result: InlayHintLabel, + last_part: String, + location_link_enabled: bool, + location: Option, +} + +impl fmt::Write for InlayHintLabelBuilder<'_> { + fn write_str(&mut self, s: &str) -> fmt::Result { + self.last_part.write_str(s) + } +} + +impl HirWrite for InlayHintLabelBuilder<'_> { + fn start_location_link(&mut self, def: ModuleDefId) { + if !self.location_link_enabled { + return; + } + if self.location.is_some() { + never!("location link is already started"); + } + self.make_new_part(); + let Some(location) = ModuleDef::from(def).try_to_nav(self.db) else { return }; + let location = + FileRange { file_id: location.file_id, range: location.focus_or_full_range() }; + self.location = Some(location); + } + + fn end_location_link(&mut self) { + if !self.location_link_enabled { + return; + } + self.make_new_part(); + } +} + +impl InlayHintLabelBuilder<'_> { + fn make_new_part(&mut self) { + self.result.parts.push(InlayHintLabelPart { + text: take(&mut self.last_part), + linked_location: self.location.take(), + }); + } + + fn finish(mut self) -> InlayHintLabel { + self.make_new_part(); + self.result + } +} + +fn label_of_ty( + famous_defs @ FamousDefs(sema, _): &FamousDefs<'_, '_>, + config: &InlayHintsConfig, + ty: hir::Type, +) -> Option { + fn rec( + sema: &Semantics<'_, RootDatabase>, + famous_defs: &FamousDefs<'_, '_>, + mut max_length: Option, + ty: hir::Type, + label_builder: &mut InlayHintLabelBuilder<'_>, + ) { + let iter_item_type = hint_iterator(sema, famous_defs, &ty); + match iter_item_type { + Some(ty) => { + const LABEL_START: &str = "impl Iterator { + let _ = ty.display_truncated(sema.db, max_length).write_to(label_builder); + } + }; + } + + let mut label_builder = InlayHintLabelBuilder { + db: sema.db, + last_part: String::new(), + location: None, + location_link_enabled: config.location_links, + result: InlayHintLabel::default(), + }; + rec(sema, famous_defs, config.max_length, ty, &mut label_builder); + let r = label_builder.finish(); + Some(r) +} + // Feature: Inlay Hints // // rust-analyzer shows additional information inline with the source code. @@ -200,7 +325,7 @@ pub(crate) fn inlay_hints( let mut acc = Vec::new(); - if let Some(scope) = sema.scope(&file) { + if let Some(scope) = sema.scope(file) { let famous_defs = FamousDefs(&sema, scope.krate()); let hints = |node| hints(&mut acc, &famous_defs, config, file_id, node); @@ -226,18 +351,18 @@ fn hints( file_id: FileId, node: SyntaxNode, ) { - closing_brace_hints(hints, sema, config, file_id, node.clone()); + closing_brace::hints(hints, sema, config, file_id, node.clone()); match_ast! { match node { ast::Expr(expr) => { - chaining_hints(hints, sema, &famous_defs, config, file_id, &expr); - adjustment_hints(hints, sema, config, &expr); + chaining::hints(hints, 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::CallExpr(it) => param_name::hints(hints, sema, config, ast::Expr::from(it)), ast::Expr::MethodCallExpr(it) => { - param_name_hints(hints, sema, config, ast::Expr::from(it)) + param_name::hints(hints, sema, config, ast::Expr::from(it)) } - ast::Expr::ClosureExpr(it) => closure_ret_hints(hints, sema, &famous_defs, config, file_id, it), + ast::Expr::ClosureExpr(it) => closure_ret::hints(hints, 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), @@ -245,21 +370,24 @@ fn hints( } }, ast::Pat(it) => { - binding_mode_hints(hints, sema, config, &it); + binding_mode::hints(hints, sema, config, &it); if let ast::Pat::IdentPat(it) = it { - bind_pat_hints(hints, sema, config, file_id, &it); + bind_pat::hints(hints, famous_defs, config, file_id, &it); } Some(()) }, ast::Item(it) => match it { // FIXME: record impl lifetimes so they aren't being reused in assoc item lifetime inlay hints ast::Item::Impl(_) => None, - ast::Item::Fn(it) => fn_lifetime_fn_hints(hints, config, it), + ast::Item::Fn(it) => fn_lifetime_fn::hints(hints, config, it), // static type elisions - ast::Item::Static(it) => implicit_static_hints(hints, config, Either::Left(it)), - ast::Item::Const(it) => implicit_static_hints(hints, config, Either::Right(it)), + ast::Item::Static(it) => implicit_static::hints(hints, config, Either::Left(it)), + ast::Item::Const(it) => implicit_static::hints(hints, config, Either::Right(it)), _ => None, }, + ast::Variant(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, _ => None, @@ -267,733 +395,12 @@ fn hints( }; } -fn closing_brace_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - file_id: FileId, - node: SyntaxNode, -) -> Option<()> { - let min_lines = config.closing_brace_hints_min_lines?; - - let name = |it: ast::Name| it.syntax().text_range(); - - let mut closing_token; - let (label, name_range) = if let Some(item_list) = ast::AssocItemList::cast(node.clone()) { - closing_token = item_list.r_curly_token()?; - - let parent = item_list.syntax().parent()?; - match_ast! { - match parent { - ast::Impl(imp) => { - let imp = sema.to_def(&imp)?; - let ty = imp.self_ty(sema.db); - let trait_ = imp.trait_(sema.db); - let hint_text = match trait_ { - Some(tr) => format!("impl {} for {}", tr.name(sema.db), ty.display_truncated(sema.db, config.max_length)), - None => format!("impl {}", ty.display_truncated(sema.db, config.max_length)), - }; - (hint_text, None) - }, - ast::Trait(tr) => { - (format!("trait {}", tr.name()?), tr.name().map(name)) - }, - _ => return None, - } - } - } else if let Some(list) = ast::ItemList::cast(node.clone()) { - closing_token = list.r_curly_token()?; - - let module = ast::Module::cast(list.syntax().parent()?)?; - (format!("mod {}", module.name()?), module.name().map(name)) - } else if let Some(block) = ast::BlockExpr::cast(node.clone()) { - closing_token = block.stmt_list()?.r_curly_token()?; - - let parent = block.syntax().parent()?; - match_ast! { - match parent { - ast::Fn(it) => { - // FIXME: this could include parameters, but `HirDisplay` prints too much info - // and doesn't respect the max length either, so the hints end up way too long - (format!("fn {}", it.name()?), it.name().map(name)) - }, - ast::Static(it) => (format!("static {}", it.name()?), it.name().map(name)), - ast::Const(it) => { - if it.underscore_token().is_some() { - ("const _".into(), None) - } else { - (format!("const {}", it.name()?), it.name().map(name)) - } - }, - _ => return None, - } - } - } else if let Some(mac) = ast::MacroCall::cast(node.clone()) { - let last_token = mac.syntax().last_token()?; - if last_token.kind() != T![;] && last_token.kind() != SyntaxKind::R_CURLY { - return None; - } - closing_token = last_token; - - ( - format!("{}!", mac.path()?), - mac.path().and_then(|it| it.segment()).map(|it| it.syntax().text_range()), - ) - } else { - return None; - }; - - if let Some(mut next) = closing_token.next_token() { - if next.kind() == T![;] { - if let Some(tok) = next.next_token() { - closing_token = next; - next = tok; - } - } - if !(next.kind() == SyntaxKind::WHITESPACE && next.text().contains('\n')) { - // Only display the hint if the `}` is the last token on the line - return None; - } - } - - let mut lines = 1; - node.text().for_each_chunk(|s| lines += s.matches('\n').count()); - if lines < min_lines { - return None; - } - - let linked_location = name_range.map(|range| FileRange { file_id, range }); - acc.push(InlayHint { - range: closing_token.text_range(), - kind: InlayKind::ClosingBraceHint, - label: InlayHintLabel { parts: vec![InlayHintLabelPart { text: label, linked_location }] }, - tooltip: None, // provided by label part location - }); - - None -} - -fn implicit_static_hints( - acc: &mut Vec, - config: &InlayHintsConfig, - statik_or_const: Either, -) -> Option<()> { - if config.lifetime_elision_hints != LifetimeElisionHints::Always { - return None; - } - - if let Either::Right(it) = &statik_or_const { - if ast::AssocItemList::can_cast( - it.syntax().parent().map_or(SyntaxKind::EOF, |it| it.kind()), - ) { - return None; - } - } - - if let Some(ast::Type::RefType(ty)) = statik_or_const.either(|it| it.ty(), |it| it.ty()) { - if ty.lifetime().is_none() { - let t = ty.amp_token()?; - acc.push(InlayHint { - range: t.text_range(), - kind: InlayKind::LifetimeHint, - label: "'static".to_owned().into(), - tooltip: Some(InlayTooltip::String("Elided static lifetime".into())), - }); - } - } - - Some(()) -} - -fn fn_lifetime_fn_hints( - acc: &mut Vec, - config: &InlayHintsConfig, - func: ast::Fn, -) -> Option<()> { - if config.lifetime_elision_hints == LifetimeElisionHints::Never { - return None; - } - - let mk_lt_hint = |t: SyntaxToken, label: String| InlayHint { - range: t.text_range(), - kind: InlayKind::LifetimeHint, - label: label.into(), - tooltip: Some(InlayTooltip::String("Elided lifetime".into())), - }; - - let param_list = func.param_list()?; - let generic_param_list = func.generic_param_list(); - let ret_type = func.ret_type(); - let self_param = param_list.self_param().filter(|it| it.amp_token().is_some()); - - let is_elided = |lt: &Option| match lt { - Some(lt) => matches!(lt.text().as_str(), "'_"), - None => true, - }; - - let potential_lt_refs = { - let mut acc: Vec<_> = vec![]; - if let Some(self_param) = &self_param { - let lifetime = self_param.lifetime(); - let is_elided = is_elided(&lifetime); - acc.push((None, self_param.amp_token(), lifetime, is_elided)); - } - param_list.params().filter_map(|it| Some((it.pat(), it.ty()?))).for_each(|(pat, ty)| { - // FIXME: check path types - walk_ty(&ty, &mut |ty| match ty { - ast::Type::RefType(r) => { - let lifetime = r.lifetime(); - let is_elided = is_elided(&lifetime); - acc.push(( - pat.as_ref().and_then(|it| match it { - ast::Pat::IdentPat(p) => p.name(), - _ => None, - }), - r.amp_token(), - lifetime, - is_elided, - )) - } - _ => (), - }) - }); - acc - }; - - // allocate names - let mut gen_idx_name = { - let mut gen = (0u8..).map(|idx| match idx { - idx if idx < 10 => SmolStr::from_iter(['\'', (idx + 48) as char]), - idx => format!("'{idx}").into(), - }); - move || gen.next().unwrap_or_default() - }; - let mut allocated_lifetimes = vec![]; - - let mut used_names: FxHashMap = - match config.param_names_for_lifetime_elision_hints { - true => generic_param_list - .iter() - .flat_map(|gpl| gpl.lifetime_params()) - .filter_map(|param| param.lifetime()) - .filter_map(|lt| Some((SmolStr::from(lt.text().as_str().get(1..)?), 0))) - .collect(), - false => Default::default(), - }; - { - let mut potential_lt_refs = potential_lt_refs.iter().filter(|&&(.., is_elided)| is_elided); - if let Some(_) = &self_param { - if let Some(_) = potential_lt_refs.next() { - allocated_lifetimes.push(if config.param_names_for_lifetime_elision_hints { - // self can't be used as a lifetime, so no need to check for collisions - "'self".into() - } else { - gen_idx_name() - }); - } - } - potential_lt_refs.for_each(|(name, ..)| { - let name = match name { - Some(it) if config.param_names_for_lifetime_elision_hints => { - if let Some(c) = used_names.get_mut(it.text().as_str()) { - *c += 1; - SmolStr::from(format!("'{text}{c}", text = it.text().as_str())) - } else { - used_names.insert(it.text().as_str().into(), 0); - SmolStr::from_iter(["\'", it.text().as_str()]) - } - } - _ => gen_idx_name(), - }; - allocated_lifetimes.push(name); - }); - } - - // fetch output lifetime if elision rule applies - let output = match potential_lt_refs.as_slice() { - [(_, _, lifetime, _), ..] if self_param.is_some() || potential_lt_refs.len() == 1 => { - match lifetime { - Some(lt) => match lt.text().as_str() { - "'_" => allocated_lifetimes.get(0).cloned(), - "'static" => None, - name => Some(name.into()), - }, - None => allocated_lifetimes.get(0).cloned(), - } - } - [..] => None, - }; - - if allocated_lifetimes.is_empty() && output.is_none() { - return None; - } - - // apply hints - // apply output if required - let mut is_trivial = true; - if let (Some(output_lt), Some(r)) = (&output, ret_type) { - if let Some(ty) = r.ty() { - walk_ty(&ty, &mut |ty| match ty { - ast::Type::RefType(ty) if ty.lifetime().is_none() => { - if let Some(amp) = ty.amp_token() { - is_trivial = false; - acc.push(mk_lt_hint(amp, output_lt.to_string())); - } - } - _ => (), - }) - } - } - - if config.lifetime_elision_hints == LifetimeElisionHints::SkipTrivial && is_trivial { - return None; - } - - let mut a = allocated_lifetimes.iter(); - for (_, amp_token, _, is_elided) in potential_lt_refs { - if is_elided { - let t = amp_token?; - let lt = a.next()?; - acc.push(mk_lt_hint(t, lt.to_string())); - } - } - - // generate generic param list things - match (generic_param_list, allocated_lifetimes.as_slice()) { - (_, []) => (), - (Some(gpl), allocated_lifetimes) => { - let angle_tok = gpl.l_angle_token()?; - let is_empty = gpl.generic_params().next().is_none(); - acc.push(InlayHint { - range: angle_tok.text_range(), - kind: InlayKind::LifetimeHint, - label: format!( - "{}{}", - allocated_lifetimes.iter().format(", "), - if is_empty { "" } else { ", " } - ) - .into(), - tooltip: Some(InlayTooltip::String("Elided lifetimes".into())), - }); - } - (None, allocated_lifetimes) => acc.push(InlayHint { - range: func.name()?.syntax().text_range(), - kind: InlayKind::GenericParamListHint, - label: format!("<{}>", allocated_lifetimes.iter().format(", "),).into(), - tooltip: Some(InlayTooltip::String("Elided lifetimes".into())), - }), - } - Some(()) -} - -fn closure_ret_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - famous_defs: &FamousDefs<'_, '_>, - config: &InlayHintsConfig, - file_id: FileId, - closure: ast::ClosureExpr, -) -> Option<()> { - if config.closure_return_type_hints == ClosureReturnTypeHints::Never { - return None; - } - - if closure.ret_type().is_some() { - return None; - } - - if !closure_has_block_body(&closure) - && config.closure_return_type_hints == ClosureReturnTypeHints::WithBlock - { - return None; - } - - let param_list = closure.param_list()?; - - let closure = sema.descend_node_into_attributes(closure.clone()).pop()?; - let ty = sema.type_of_expr(&ast::Expr::ClosureExpr(closure))?.adjusted(); - let callable = ty.as_callable(sema.db)?; - let ty = callable.return_type(); - if ty.is_unit() { - return None; - } - acc.push(InlayHint { - range: param_list.syntax().text_range(), - kind: InlayKind::ClosureReturnTypeHint, - label: hint_iterator(sema, &famous_defs, config, &ty) - .unwrap_or_else(|| ty.display_truncated(sema.db, config.max_length).to_string()) - .into(), - tooltip: Some(InlayTooltip::HoverRanged(file_id, param_list.syntax().text_range())), - }); - Some(()) -} - -fn adjustment_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - expr: &ast::Expr, -) -> Option<()> { - 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 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 { - 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(()) -} - -fn chaining_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - famous_defs: &FamousDefs<'_, '_>, - config: &InlayHintsConfig, - file_id: FileId, - expr: &ast::Expr, -) -> Option<()> { - if !config.chaining_hints { - return None; - } - - if matches!(expr, ast::Expr::RecordExpr(_)) { - return None; - } - - let descended = sema.descend_node_into_attributes(expr.clone()).pop(); - let desc_expr = descended.as_ref().unwrap_or(expr); - - let mut tokens = expr - .syntax() - .siblings_with_tokens(Direction::Next) - .filter_map(NodeOrToken::into_token) - .filter(|t| match t.kind() { - SyntaxKind::WHITESPACE if !t.text().contains('\n') => false, - SyntaxKind::COMMENT => false, - _ => true, - }); - - // Chaining can be defined as an expression whose next sibling tokens are newline and dot - // Ignoring extra whitespace and comments - let next = tokens.next()?.kind(); - if next == SyntaxKind::WHITESPACE { - let mut next_next = tokens.next()?.kind(); - while next_next == SyntaxKind::WHITESPACE { - next_next = tokens.next()?.kind(); - } - if next_next == T![.] { - let ty = sema.type_of_expr(desc_expr)?.original; - if ty.is_unknown() { - return None; - } - if matches!(expr, ast::Expr::PathExpr(_)) { - if let Some(hir::Adt::Struct(st)) = ty.as_adt() { - if st.fields(sema.db).is_empty() { - return None; - } - } - } - acc.push(InlayHint { - range: expr.syntax().text_range(), - kind: InlayKind::ChainingHint, - label: hint_iterator(sema, &famous_defs, config, &ty) - .unwrap_or_else(|| ty.display_truncated(sema.db, config.max_length).to_string()) - .into(), - tooltip: Some(InlayTooltip::HoverRanged(file_id, expr.syntax().text_range())), - }); - } - } - Some(()) -} - -fn param_name_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - expr: ast::Expr, -) -> Option<()> { - if !config.parameter_hints { - return None; - } - - let (callable, arg_list) = get_callable(sema, &expr)?; - let hints = callable - .params(sema.db) - .into_iter() - .zip(arg_list.args()) - .filter_map(|((param, _ty), arg)| { - // Only annotate hints for expressions that exist in the original file - let range = sema.original_range_opt(arg.syntax())?; - let (param_name, name_syntax) = match param.as_ref()? { - Either::Left(pat) => ("self".to_string(), pat.name()), - Either::Right(pat) => match pat { - ast::Pat::IdentPat(it) => (it.name()?.to_string(), it.name()), - _ => return None, - }, - }; - Some((name_syntax, param_name, arg, range)) - }) - .filter(|(_, param_name, arg, _)| { - !should_hide_param_name_hint(sema, &callable, param_name, arg) - }) - .map(|(param, param_name, _, FileRange { range, .. })| { - let mut tooltip = None; - if let Some(name) = param { - if let hir::CallableKind::Function(f) = callable.kind() { - // assert the file is cached so we can map out of macros - if let Some(_) = sema.source(f) { - tooltip = sema.original_range_opt(name.syntax()); - } - } - } - - InlayHint { - range, - kind: InlayKind::ParameterHint, - label: param_name.into(), - tooltip: tooltip.map(|it| InlayTooltip::HoverOffset(it.file_id, it.range.start())), - } - }); - - acc.extend(hints); - Some(()) -} - -fn binding_mode_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - pat: &ast::Pat, -) -> Option<()> { - if !config.binding_mode_hints { - return None; - } - - let range = pat.syntax().text_range(); - sema.pattern_adjustments(&pat).iter().for_each(|ty| { - let reference = ty.is_reference(); - let mut_reference = ty.is_mutable_reference(); - let r = match (reference, mut_reference) { - (true, true) => "&mut", - (true, false) => "&", - _ => return, - }; - acc.push(InlayHint { - range, - kind: InlayKind::BindingModeHint, - label: r.to_string().into(), - tooltip: Some(InlayTooltip::String("Inferred binding mode".into())), - }); - }); - match pat { - ast::Pat::IdentPat(pat) if pat.ref_token().is_none() && pat.mut_token().is_none() => { - let bm = sema.binding_mode_of_pat(pat)?; - let bm = match bm { - hir::BindingMode::Move => return None, - hir::BindingMode::Ref(Mutability::Mut) => "ref mut", - hir::BindingMode::Ref(Mutability::Shared) => "ref", - }; - acc.push(InlayHint { - range, - kind: InlayKind::BindingModeHint, - label: bm.to_string().into(), - tooltip: Some(InlayTooltip::String("Inferred binding mode".into())), - }); - } - _ => (), - } - - Some(()) -} - -fn bind_pat_hints( - acc: &mut Vec, - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - file_id: FileId, - pat: &ast::IdentPat, -) -> Option<()> { - if !config.type_hints { - return None; - } - - let descended = sema.descend_node_into_attributes(pat.clone()).pop(); - let desc_pat = descended.as_ref().unwrap_or(pat); - let ty = sema.type_of_pat(&desc_pat.clone().into())?.original; - - if should_not_display_type_hint(sema, config, pat, &ty) { - return None; - } - - let krate = sema.scope(desc_pat.syntax())?.krate(); - let famous_defs = FamousDefs(sema, krate); - let label = hint_iterator(sema, &famous_defs, config, &ty); - - let label = match label { - Some(label) => label, - None => { - let ty_name = ty.display_truncated(sema.db, config.max_length).to_string(); - if config.hide_named_constructor_hints - && is_named_constructor(sema, pat, &ty_name).is_some() - { - return None; - } - ty_name - } - }; - - acc.push(InlayHint { - range: match pat.name() { - Some(name) => name.syntax().text_range(), - None => pat.syntax().text_range(), - }, - kind: InlayKind::TypeHint, - label: label.into(), - tooltip: pat - .name() - .map(|it| it.syntax().text_range()) - .map(|it| InlayTooltip::HoverRanged(file_id, it)), - }); - - Some(()) -} - -fn is_named_constructor( - sema: &Semantics<'_, RootDatabase>, - pat: &ast::IdentPat, - ty_name: &str, -) -> Option<()> { - let let_node = pat.syntax().parent()?; - let expr = match_ast! { - match let_node { - ast::LetStmt(it) => it.initializer(), - ast::LetExpr(it) => it.expr(), - _ => None, - } - }?; - - let expr = sema.descend_node_into_attributes(expr.clone()).pop().unwrap_or(expr); - // unwrap postfix expressions - let expr = match expr { - ast::Expr::TryExpr(it) => it.expr(), - ast::Expr::AwaitExpr(it) => it.expr(), - expr => Some(expr), - }?; - let expr = match expr { - ast::Expr::CallExpr(call) => match call.expr()? { - ast::Expr::PathExpr(path) => path, - _ => return None, - }, - ast::Expr::PathExpr(path) => path, - _ => return None, - }; - let path = expr.path()?; - - let callable = sema.type_of_expr(&ast::Expr::PathExpr(expr))?.original.as_callable(sema.db); - let callable_kind = callable.map(|it| it.kind()); - let qual_seg = match callable_kind { - Some(hir::CallableKind::Function(_) | hir::CallableKind::TupleEnumVariant(_)) => { - path.qualifier()?.segment() - } - _ => path.segment(), - }?; - - 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(", ")), - None => name_ref.to_string(), - } - } - ast::PathSegmentKind::Type { type_ref: Some(ty), trait_ref: None } => ty.to_string(), - _ => return None, - }; - (ctor_name == ty_name).then(|| ()) -} - -/// Checks if the type is an Iterator from std::iter and replaces its hint with an `impl Iterator`. +/// Checks if the type is an Iterator from std::iter and returns its item type. fn hint_iterator( sema: &Semantics<'_, RootDatabase>, famous_defs: &FamousDefs<'_, '_>, - config: &InlayHintsConfig, ty: &hir::Type, -) -> Option { +) -> Option { let db = sema.db; let strukt = ty.strip_references().as_adt()?; let krate = strukt.module(db).krate(); @@ -1016,289 +423,32 @@ fn hint_iterator( _ => None, })?; if let Some(ty) = ty.normalize_trait_assoc_type(db, &[], assoc_type_item) { - const LABEL_START: &str = "impl Iterator bool { - if let Some(hir::Adt::Enum(enum_data)) = pat_ty.as_adt() { - let pat_text = bind_pat.to_string(); - enum_data - .variants(db) - .into_iter() - .map(|variant| variant.name(db).to_smol_str()) - .any(|enum_name| enum_name == pat_text) - } else { - false - } -} - -fn should_not_display_type_hint( - sema: &Semantics<'_, RootDatabase>, - config: &InlayHintsConfig, - bind_pat: &ast::IdentPat, - pat_ty: &hir::Type, -) -> bool { - let db = sema.db; - - if pat_ty.is_unknown() { - return true; - } - - if let Some(hir::Adt::Struct(s)) = pat_ty.as_adt() { - if s.fields(db).is_empty() && s.name(db).to_smol_str() == bind_pat.to_string() { - return true; - } - } - - 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(ast::Expr::ClosureExpr(closure)) = it.initializer() { - if closure_has_block_body(&closure) { - return true; - } - } - } - } - } - - for node in bind_pat.syntax().ancestors() { - match_ast! { - match node { - ast::LetStmt(it) => return it.ty().is_some(), - // FIXME: We might wanna show type hints in parameters for non-top level patterns as well - ast::Param(it) => return it.ty().is_some(), - ast::MatchArm(_) => return pat_is_enum_variant(db, bind_pat, pat_ty), - ast::LetExpr(_) => return pat_is_enum_variant(db, bind_pat, pat_ty), - ast::IfExpr(_) => return false, - ast::WhileExpr(_) => return false, - ast::ForExpr(it) => { - // We *should* display hint only if user provided "in {expr}" and we know the type of expr (and it's not unit). - // Type of expr should be iterable. - return it.in_token().is_none() || - it.iterable() - .and_then(|iterable_expr| sema.type_of_expr(&iterable_expr)) - .map(TypeInfo::original) - .map_or(true, |iterable_ty| iterable_ty.is_unknown() || iterable_ty.is_unit()) - }, - _ => (), - } - } - } - false -} - fn closure_has_block_body(closure: &ast::ClosureExpr) -> bool { matches!(closure.body(), Some(ast::Expr::BlockExpr(_))) } -fn should_hide_param_name_hint( - sema: &Semantics<'_, RootDatabase>, - callable: &hir::Callable, - param_name: &str, - argument: &ast::Expr, -) -> bool { - // These are to be tested in the `parameter_hint_heuristics` test - // hide when: - // - the parameter name is a suffix of the function's name - // - the argument is a qualified constructing or call expression where the qualifier is an ADT - // - exact argument<->parameter match(ignoring leading underscore) or parameter is a prefix/suffix - // of argument with _ splitting it off - // - param starts with `ra_fixture` - // - param is a well known name in a unary function - - let param_name = param_name.trim_start_matches('_'); - if param_name.is_empty() { - return true; - } - - if matches!(argument, ast::Expr::PrefixExpr(prefix) if prefix.op_kind() == Some(UnaryOp::Not)) { - return false; - } - - let fn_name = match callable.kind() { - hir::CallableKind::Function(it) => Some(it.name(sema.db).to_smol_str()), - _ => None, - }; - let fn_name = fn_name.as_deref(); - is_param_name_suffix_of_fn_name(param_name, callable, fn_name) - || is_argument_similar_to_param_name(argument, param_name) - || param_name.starts_with("ra_fixture") - || (callable.n_params() == 1 && is_obvious_param(param_name)) - || is_adt_constructor_similar_to_param_name(sema, argument, param_name) -} - -fn is_argument_similar_to_param_name(argument: &ast::Expr, param_name: &str) -> bool { - // check whether param_name and argument are the same or - // whether param_name is a prefix/suffix of argument(split at `_`) - let argument = match get_string_representation(argument) { - Some(argument) => argument, - None => return false, - }; - - // std is honestly too panic happy... - let str_split_at = |str: &str, at| str.is_char_boundary(at).then(|| argument.split_at(at)); - - let param_name = param_name.trim_start_matches('_'); - let argument = argument.trim_start_matches('_'); - - match str_split_at(argument, param_name.len()) { - Some((prefix, rest)) if prefix.eq_ignore_ascii_case(param_name) => { - return rest.is_empty() || rest.starts_with('_'); - } - _ => (), - } - match argument.len().checked_sub(param_name.len()).and_then(|at| str_split_at(argument, at)) { - Some((rest, suffix)) if param_name.eq_ignore_ascii_case(suffix) => { - return rest.is_empty() || rest.ends_with('_'); - } - _ => (), - } - false -} - -/// Hide the parameter name of a unary function if it is a `_` - prefixed suffix of the function's name, or equal. -/// -/// `fn strip_suffix(suffix)` will be hidden. -/// `fn stripsuffix(suffix)` will not be hidden. -fn is_param_name_suffix_of_fn_name( - param_name: &str, - callable: &Callable, - fn_name: Option<&str>, -) -> bool { - match (callable.n_params(), fn_name) { - (1, Some(function)) => { - function == param_name - || function - .len() - .checked_sub(param_name.len()) - .and_then(|at| function.is_char_boundary(at).then(|| function.split_at(at))) - .map_or(false, |(prefix, suffix)| { - suffix.eq_ignore_ascii_case(param_name) && prefix.ends_with('_') - }) - } - _ => false, - } -} - -fn is_adt_constructor_similar_to_param_name( - sema: &Semantics<'_, RootDatabase>, - argument: &ast::Expr, - param_name: &str, -) -> bool { - let path = match argument { - ast::Expr::CallExpr(c) => c.expr().and_then(|e| match e { - ast::Expr::PathExpr(p) => p.path(), - _ => None, - }), - ast::Expr::PathExpr(p) => p.path(), - ast::Expr::RecordExpr(r) => r.path(), - _ => return false, - }; - let path = match path { - Some(it) => it, - None => return false, - }; - (|| match sema.resolve_path(&path)? { - hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => { - Some(to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name) - } - hir::PathResolution::Def(hir::ModuleDef::Function(_) | hir::ModuleDef::Variant(_)) => { - if to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name { - return Some(true); - } - let qual = path.qualifier()?; - match sema.resolve_path(&qual)? { - hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => { - Some(to_lower_snake_case(&qual.segment()?.name_ref()?.text()) == param_name) - } - _ => None, - } - } - _ => None, - })() - .unwrap_or(false) -} - -fn get_string_representation(expr: &ast::Expr) -> Option { - match expr { - ast::Expr::MethodCallExpr(method_call_expr) => { - let name_ref = method_call_expr.name_ref()?; - match name_ref.text().as_str() { - "clone" | "as_ref" => method_call_expr.receiver().map(|rec| rec.to_string()), - name_ref => Some(name_ref.to_owned()), - } - } - ast::Expr::MacroExpr(macro_expr) => { - Some(macro_expr.macro_call()?.path()?.segment()?.to_string()) - } - ast::Expr::FieldExpr(field_expr) => Some(field_expr.name_ref()?.to_string()), - ast::Expr::PathExpr(path_expr) => Some(path_expr.path()?.segment()?.to_string()), - ast::Expr::PrefixExpr(prefix_expr) => get_string_representation(&prefix_expr.expr()?), - ast::Expr::RefExpr(ref_expr) => get_string_representation(&ref_expr.expr()?), - ast::Expr::CastExpr(cast_expr) => get_string_representation(&cast_expr.expr()?), - _ => None, - } -} - -fn is_obvious_param(param_name: &str) -> bool { - // avoid displaying hints for common functions like map, filter, etc. - // or other obvious words used in std - let is_obvious_param_name = - matches!(param_name, "predicate" | "value" | "pat" | "rhs" | "other"); - param_name.len() == 1 || is_obvious_param_name -} - -fn get_callable( - sema: &Semantics<'_, RootDatabase>, - expr: &ast::Expr, -) -> Option<(hir::Callable, ast::ArgList)> { - match expr { - ast::Expr::CallExpr(expr) => { - let descended = sema.descend_node_into_attributes(expr.clone()).pop(); - let expr = descended.as_ref().unwrap_or(expr); - sema.type_of_expr(&expr.expr()?)?.original.as_callable(sema.db).zip(expr.arg_list()) - } - ast::Expr::MethodCallExpr(expr) => { - let descended = sema.descend_node_into_attributes(expr.clone()).pop(); - let expr = descended.as_ref().unwrap_or(expr); - sema.resolve_method_call_as_callable(expr).zip(expr.arg_list()) - } - _ => None, - } -} - #[cfg(test)] mod tests { - use expect_test::{expect, Expect}; + use expect_test::Expect; use itertools::Itertools; - use syntax::{TextRange, TextSize}; 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}; use super::ClosureReturnTypeHints; - const DISABLED_CONFIG: InlayHintsConfig = InlayHintsConfig { + pub(super) const DISABLED_CONFIG: InlayHintsConfig = InlayHintsConfig { + location_links: false, + discriminant_hints: DiscriminantHints::Never, render_colons: false, type_hints: false, parameter_hints: false, @@ -1306,6 +456,8 @@ mod tests { lifetime_elision_hints: LifetimeElisionHints::Never, closure_return_type_hints: ClosureReturnTypeHints::Never, adjustment_hints: AdjustmentHints::Never, + adjustment_hints_mode: AdjustmentHintsMode::Prefix, + adjustment_hints_hide_outside_unsafe: false, binding_mode_hints: false, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, @@ -1313,43 +465,27 @@ mod tests { max_length: None, closing_brace_hints_min_lines: None, }; - const TEST_CONFIG: InlayHintsConfig = InlayHintsConfig { + pub(super) const DISABLED_CONFIG_WITH_LINKS: InlayHintsConfig = + InlayHintsConfig { location_links: true, ..DISABLED_CONFIG }; + pub(super) const TEST_CONFIG: InlayHintsConfig = InlayHintsConfig { type_hints: true, parameter_hints: true, chaining_hints: true, closure_return_type_hints: ClosureReturnTypeHints::WithBlock, binding_mode_hints: true, lifetime_elision_hints: LifetimeElisionHints::Always, - ..DISABLED_CONFIG + ..DISABLED_CONFIG_WITH_LINKS }; #[track_caller] - fn check(ra_fixture: &str) { + pub(super) fn check(ra_fixture: &str) { check_with_config(TEST_CONFIG, ra_fixture); } #[track_caller] - fn check_params(ra_fixture: &str) { - check_with_config( - InlayHintsConfig { parameter_hints: true, ..DISABLED_CONFIG }, - ra_fixture, - ); - } - - #[track_caller] - fn check_types(ra_fixture: &str) { - check_with_config(InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, ra_fixture); - } - - #[track_caller] - fn check_chains(ra_fixture: &str) { - check_with_config(InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, ra_fixture); - } - - #[track_caller] - fn check_with_config(config: InlayHintsConfig, ra_fixture: &str) { + 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() @@ -1358,11 +494,11 @@ 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] - fn check_expect(config: InlayHintsConfig, ra_fixture: &str, expect: Expect) { + pub(super) fn check_expect(config: InlayHintsConfig, ra_fixture: &str, expect: Expect) { let (analysis, file_id) = fixture::file(ra_fixture); let inlay_hints = analysis.inlay_hints(&config, file_id, None).unwrap(); expect.assert_debug_eq(&inlay_hints) @@ -1379,1720 +515,4 @@ fn main() { }"#, ); } - - // Parameter hint tests - - #[test] - fn param_hints_only() { - check_params( - r#" -fn foo(a: i32, b: i32) -> i32 { a + b } -fn main() { - let _x = foo( - 4, - //^ a - 4, - //^ b - ); -}"#, - ); - } - - #[test] - fn param_hints_on_closure() { - check_params( - r#" -fn main() { - let clo = |a: u8, b: u8| a + b; - clo( - 1, - //^ a - 2, - //^ b - ); -} - "#, - ); - } - - #[test] - fn param_name_similar_to_fn_name_still_hints() { - check_params( - r#" -fn max(x: i32, y: i32) -> i32 { x + y } -fn main() { - let _x = max( - 4, - //^ x - 4, - //^ y - ); -}"#, - ); - } - - #[test] - fn param_name_similar_to_fn_name() { - check_params( - r#" -fn param_with_underscore(with_underscore: i32) -> i32 { with_underscore } -fn main() { - let _x = param_with_underscore( - 4, - ); -}"#, - ); - check_params( - r#" -fn param_with_underscore(underscore: i32) -> i32 { underscore } -fn main() { - let _x = param_with_underscore( - 4, - ); -}"#, - ); - } - - #[test] - fn param_name_same_as_fn_name() { - check_params( - r#" -fn foo(foo: i32) -> i32 { foo } -fn main() { - let _x = foo( - 4, - ); -}"#, - ); - } - - #[test] - fn never_hide_param_when_multiple_params() { - check_params( - r#" -fn foo(foo: i32, bar: i32) -> i32 { bar + baz } -fn main() { - let _x = foo( - 4, - //^ foo - 8, - //^ bar - ); -}"#, - ); - } - - #[test] - fn param_hints_look_through_as_ref_and_clone() { - check_params( - r#" -fn foo(bar: i32, baz: f32) {} - -fn main() { - let bar = 3; - let baz = &"baz"; - let fez = 1.0; - foo(bar.clone(), bar.clone()); - //^^^^^^^^^^^ baz - foo(bar.as_ref(), bar.as_ref()); - //^^^^^^^^^^^^ baz -} -"#, - ); - } - - #[test] - fn self_param_hints() { - check_params( - r#" -struct Foo; - -impl Foo { - fn foo(self: Self) {} - fn bar(self: &Self) {} -} - -fn main() { - Foo::foo(Foo); - //^^^ self - Foo::bar(&Foo); - //^^^^ self -} -"#, - ) - } - - #[test] - fn param_name_hints_show_for_literals() { - check_params( - r#"pub fn test(a: i32, b: i32) -> [i32; 2] { [a, b] } -fn main() { - test( - 0xa_b, - //^^^^^ a - 0xa_b, - //^^^^^ b - ); -}"#, - ) - } - - #[test] - fn function_call_parameter_hint() { - check_params( - r#" -//- minicore: option -struct FileId {} -struct SmolStr {} - -struct TextRange {} -struct SyntaxKind {} -struct NavigationTarget {} - -struct Test {} - -impl Test { - fn method(&self, mut param: i32) -> i32 { param * 2 } - - fn from_syntax( - file_id: FileId, - name: SmolStr, - focus_range: Option, - full_range: TextRange, - kind: SyntaxKind, - docs: Option, - ) -> NavigationTarget { - NavigationTarget {} - } -} - -fn test_func(mut foo: i32, bar: i32, msg: &str, _: i32, last: i32) -> i32 { - foo + bar -} - -fn main() { - let not_literal = 1; - let _: i32 = test_func(1, 2, "hello", 3, not_literal); - //^ foo ^ bar ^^^^^^^ msg ^^^^^^^^^^^ last - let t: Test = Test {}; - t.method(123); - //^^^ param - Test::method(&t, 3456); - //^^ self ^^^^ param - Test::from_syntax( - FileId {}, - "impl".into(), - //^^^^^^^^^^^^^ name - None, - //^^^^ focus_range - TextRange {}, - //^^^^^^^^^^^^ full_range - SyntaxKind {}, - //^^^^^^^^^^^^^ kind - None, - //^^^^ docs - ); -}"#, - ); - } - - #[test] - fn parameter_hint_heuristics() { - check_params( - r#" -fn check(ra_fixture_thing: &str) {} - -fn map(f: i32) {} -fn filter(predicate: i32) {} - -fn strip_suffix(suffix: &str) {} -fn stripsuffix(suffix: &str) {} -fn same(same: u32) {} -fn same2(_same2: u32) {} - -fn enum_matches_param_name(completion_kind: CompletionKind) {} - -fn foo(param: u32) {} -fn bar(param_eter: u32) {} - -enum CompletionKind { - Keyword, -} - -fn non_ident_pat((a, b): (u32, u32)) {} - -fn main() { - const PARAM: u32 = 0; - foo(PARAM); - foo(!PARAM); - // ^^^^^^ param - check(""); - - map(0); - filter(0); - - strip_suffix(""); - stripsuffix(""); - //^^ suffix - same(0); - same2(0); - - enum_matches_param_name(CompletionKind::Keyword); - - let param = 0; - foo(param); - foo(param as _); - let param_end = 0; - foo(param_end); - let start_param = 0; - foo(start_param); - let param2 = 0; - foo(param2); - //^^^^^^ param - - macro_rules! param { - () => {}; - }; - foo(param!()); - - let param_eter = 0; - bar(param_eter); - let param_eter_end = 0; - bar(param_eter_end); - let start_param_eter = 0; - bar(start_param_eter); - let param_eter2 = 0; - bar(param_eter2); - //^^^^^^^^^^^ param_eter - - non_ident_pat((0, 0)); -}"#, - ); - } - - // Type-Hint tests - - #[test] - fn type_hints_only() { - check_types( - r#" -fn foo(a: i32, b: i32) -> i32 { a + b } -fn main() { - let _x = foo(4, 4); - //^^ i32 -}"#, - ); - } - - #[test] - fn type_hints_bindings_after_at() { - check_types( - r#" -//- minicore: option -fn main() { - let ref foo @ bar @ ref mut baz = 0; - //^^^ &i32 - //^^^ i32 - //^^^ &mut i32 - let [x @ ..] = [0]; - //^ [i32; 1] - if let x @ Some(_) = Some(0) {} - //^ Option - let foo @ (bar, baz) = (3, 3); - //^^^ (i32, i32) - //^^^ i32 - //^^^ i32 -}"#, - ); - } - - #[test] - fn default_generic_types_should_not_be_displayed() { - check( - r#" -struct Test { k: K, t: T } - -fn main() { - let zz = Test { t: 23u8, k: 33 }; - //^^ Test - let zz_ref = &zz; - //^^^^^^ &Test - let test = || zz; - //^^^^ || -> Test -}"#, - ); - } - - #[test] - fn shorten_iterators_in_associated_params() { - check_types( - r#" -//- minicore: iterators -use core::iter; - -pub struct SomeIter {} - -impl SomeIter { - pub fn new() -> Self { SomeIter {} } - pub fn push(&mut self, t: T) {} -} - -impl Iterator for SomeIter { - type Item = T; - fn next(&mut self) -> Option { - None - } -} - -fn main() { - let mut some_iter = SomeIter::new(); - //^^^^^^^^^ SomeIter>> - some_iter.push(iter::repeat(2).take(2)); - let iter_of_iters = some_iter.take(2); - //^^^^^^^^^^^^^ impl Iterator> -} -"#, - ); - } - - #[test] - fn iterator_hint_regression_issue_12674() { - // Ensure we don't crash while solving the projection type of iterators. - check_expect( - InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, - r#" -//- minicore: iterators -struct S(T); -impl S { - fn iter(&self) -> Iter<'_, T> { loop {} } -} -struct Iter<'a, T: 'a>(&'a T); -impl<'a, T> Iterator for Iter<'a, T> { - type Item = &'a T; - fn next(&mut self) -> Option { loop {} } -} -struct Container<'a> { - elements: S<&'a str>, -} -struct SliceIter<'a, T>(&'a T); -impl<'a, T> Iterator for SliceIter<'a, T> { - type Item = &'a T; - fn next(&mut self) -> Option { loop {} } -} - -fn main(a: SliceIter<'_, Container>) { - a - .filter_map(|c| Some(c.elements.iter().filter_map(|v| Some(v)))) - .map(|e| e); -} - "#, - expect![[r#" - [ - InlayHint { - range: 484..554, - kind: ChainingHint, - label: [ - "impl Iterator>", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 484..554, - ), - ), - }, - InlayHint { - range: 484..485, - kind: ChainingHint, - label: [ - "SliceIter", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 484..485, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn infer_call_method_return_associated_types_with_generic() { - check_types( - r#" - pub trait Default { - fn default() -> Self; - } - pub trait Foo { - type Bar: Default; - } - - pub fn quux() -> T::Bar { - let y = Default::default(); - //^ ::Bar - - y - } - "#, - ); - } - - #[test] - fn fn_hints() { - check_types( - r#" -//- minicore: fn, sized -fn foo() -> impl Fn() { loop {} } -fn foo1() -> impl Fn(f64) { loop {} } -fn foo2() -> impl Fn(f64, f64) { loop {} } -fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} } -fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} } -fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} } -fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} } -fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} } - -fn main() { - let foo = foo(); - // ^^^ impl Fn() - let foo = foo1(); - // ^^^ impl Fn(f64) - let foo = foo2(); - // ^^^ impl Fn(f64, f64) - let foo = foo3(); - // ^^^ impl Fn(f64, f64) -> u32 - let foo = foo4(); - // ^^^ &dyn Fn(f64, f64) -> u32 - let foo = foo5(); - // ^^^ &dyn Fn(&dyn Fn(f64, f64) -> u32, f64) -> u32 - let foo = foo6(); - // ^^^ impl Fn(f64, f64) -> u32 - let foo = foo7(); - // ^^^ *const impl Fn(f64, f64) -> u32 -} -"#, - ) - } - - #[test] - fn check_hint_range_limit() { - let fixture = r#" - //- minicore: fn, sized - fn foo() -> impl Fn() { loop {} } - fn foo1() -> impl Fn(f64) { loop {} } - fn foo2() -> impl Fn(f64, f64) { loop {} } - fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} } - fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} } - fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} } - fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} } - fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} } - - fn main() { - let foo = foo(); - let foo = foo1(); - let foo = foo2(); - // ^^^ impl Fn(f64, f64) - let foo = foo3(); - // ^^^ impl Fn(f64, f64) -> u32 - let foo = foo4(); - let foo = foo5(); - let foo = foo6(); - let foo = foo7(); - } - "#; - let (analysis, file_id) = fixture::file(fixture); - let expected = extract_annotations(&*analysis.file_text(file_id).unwrap()); - let inlay_hints = analysis - .inlay_hints( - &InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, - file_id, - Some(TextRange::new(TextSize::from(500), TextSize::from(600))), - ) - .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); - } - - #[test] - fn fn_hints_ptr_rpit_fn_parentheses() { - check_types( - r#" -//- minicore: fn, sized -trait Trait {} - -fn foo1() -> *const impl Fn() { loop {} } -fn foo2() -> *const (impl Fn() + Sized) { loop {} } -fn foo3() -> *const (impl Fn() + ?Sized) { loop {} } -fn foo4() -> *const (impl Sized + Fn()) { loop {} } -fn foo5() -> *const (impl ?Sized + Fn()) { loop {} } -fn foo6() -> *const (impl Fn() + Trait) { loop {} } -fn foo7() -> *const (impl Fn() + Sized + Trait) { loop {} } -fn foo8() -> *const (impl Fn() + ?Sized + Trait) { loop {} } -fn foo9() -> *const (impl Fn() -> u8 + ?Sized) { loop {} } -fn foo10() -> *const (impl Fn() + Sized + ?Sized) { loop {} } - -fn main() { - let foo = foo1(); - // ^^^ *const impl Fn() - let foo = foo2(); - // ^^^ *const impl Fn() - let foo = foo3(); - // ^^^ *const (impl Fn() + ?Sized) - let foo = foo4(); - // ^^^ *const impl Fn() - let foo = foo5(); - // ^^^ *const (impl Fn() + ?Sized) - let foo = foo6(); - // ^^^ *const (impl Fn() + Trait) - let foo = foo7(); - // ^^^ *const (impl Fn() + Trait) - let foo = foo8(); - // ^^^ *const (impl Fn() + Trait + ?Sized) - let foo = foo9(); - // ^^^ *const (impl Fn() -> u8 + ?Sized) - let foo = foo10(); - // ^^^ *const impl Fn() -} -"#, - ) - } - - #[test] - fn unit_structs_have_no_type_hints() { - check_types( - r#" -//- minicore: result -struct SyntheticSyntax; - -fn main() { - match Ok(()) { - Ok(_) => (), - Err(SyntheticSyntax) => (), - } -}"#, - ); - } - - #[test] - fn let_statement() { - check_types( - r#" -#[derive(PartialEq)] -enum Option { None, Some(T) } - -#[derive(PartialEq)] -struct Test { a: Option, b: u8 } - -fn main() { - struct InnerStruct {} - - let test = 54; - //^^^^ i32 - let test: i32 = 33; - let mut test = 33; - //^^^^ i32 - let _ = 22; - let test = "test"; - //^^^^ &str - let test = InnerStruct {}; - //^^^^ InnerStruct - - let test = unresolved(); - - let test = (42, 'a'); - //^^^^ (i32, char) - let (a, (b, (c,)) = (2, (3, (9.2,)); - //^ i32 ^ i32 ^ f64 - let &x = &92; - //^ i32 -}"#, - ); - } - - #[test] - fn if_expr() { - check_types( - r#" -//- minicore: option -struct Test { a: Option, b: u8 } - -fn main() { - let test = Some(Test { a: Some(3), b: 1 }); - //^^^^ Option - if let None = &test {}; - if let test = &test {}; - //^^^^ &Option - if let Some(test) = &test {}; - //^^^^ &Test - if let Some(Test { a, b }) = &test {}; - //^ &Option ^ &u8 - if let Some(Test { a: x, b: y }) = &test {}; - //^ &Option ^ &u8 - if let Some(Test { a: Some(x), b: y }) = &test {}; - //^ &u32 ^ &u8 - if let Some(Test { a: None, b: y }) = &test {}; - //^ &u8 - if let Some(Test { b: y, .. }) = &test {}; - //^ &u8 - if test == None {} -}"#, - ); - } - - #[test] - fn while_expr() { - check_types( - r#" -//- minicore: option -struct Test { a: Option, b: u8 } - -fn main() { - let test = Some(Test { a: Some(3), b: 1 }); - //^^^^ Option - while let Some(Test { a: Some(x), b: y }) = &test {}; - //^ &u32 ^ &u8 -}"#, - ); - } - - #[test] - fn match_arm_list() { - check_types( - r#" -//- minicore: option -struct Test { a: Option, b: u8 } - -fn main() { - match Some(Test { a: Some(3), b: 1 }) { - None => (), - test => (), - //^^^^ Option - Some(Test { a: Some(x), b: y }) => (), - //^ u32 ^ u8 - _ => {} - } -}"#, - ); - } - - #[test] - fn complete_for_hint() { - check_types( - r#" -//- minicore: iterator -pub struct Vec {} - -impl Vec { - pub fn new() -> Self { Vec {} } - pub fn push(&mut self, t: T) {} -} - -impl IntoIterator for Vec { - type Item = T; - type IntoIter = IntoIter; -} - -struct IntoIter {} - -impl Iterator for IntoIter { - type Item = T; -} - -fn main() { - let mut data = Vec::new(); - //^^^^ Vec<&str> - data.push("foo"); - for i in data { - //^ &str - let z = i; - //^ &str - } -} -"#, - ); - } - - #[test] - fn multi_dyn_trait_bounds() { - check_types( - r#" -pub struct Vec {} - -impl Vec { - pub fn new() -> Self { Vec {} } -} - -pub struct Box {} - -trait Display {} -auto trait Sync {} - -fn main() { - // The block expression wrapping disables the constructor hint hiding logic - let _v = { Vec::>::new() }; - //^^ Vec> - let _v = { Vec::>::new() }; - //^^ Vec> - let _v = { Vec::>::new() }; - //^^ Vec> -} -"#, - ); - } - - #[test] - fn shorten_iterator_hints() { - check_types( - r#" -//- minicore: iterators -use core::iter; - -struct MyIter; - -impl Iterator for MyIter { - type Item = (); - fn next(&mut self) -> Option { - None - } -} - -fn main() { - let _x = MyIter; - //^^ MyIter - let _x = iter::repeat(0); - //^^ impl Iterator - fn generic(t: T) { - let _x = iter::repeat(t); - //^^ impl Iterator - let _chained = iter::repeat(t).take(10); - //^^^^^^^^ impl Iterator - } -} -"#, - ); - } - - #[test] - fn skip_constructor_and_enum_type_hints() { - check_with_config( - InlayHintsConfig { - type_hints: true, - hide_named_constructor_hints: true, - ..DISABLED_CONFIG - }, - r#" -//- minicore: try, option -use core::ops::ControlFlow; - -mod x { - pub mod y { pub struct Foo; } - pub struct Foo; - pub enum AnotherEnum { - Variant() - }; -} -struct Struct; -struct TupleStruct(); - -impl Struct { - fn new() -> Self { - Struct - } - fn try_new() -> ControlFlow<(), Self> { - ControlFlow::Continue(Struct) - } -} - -struct Generic(T); -impl Generic { - fn new() -> Self { - Generic(0) - } -} - -enum Enum { - Variant(u32) -} - -fn times2(value: i32) -> i32 { - 2 * value -} - -fn main() { - let enumb = Enum::Variant(0); - - let strukt = x::Foo; - let strukt = x::y::Foo; - let strukt = Struct; - let strukt = Struct::new(); - - let tuple_struct = TupleStruct(); - - let generic0 = Generic::new(); - // ^^^^^^^^ Generic - let generic1 = Generic(0); - // ^^^^^^^^ Generic - let generic2 = Generic::::new(); - let generic3 = >::new(); - let generic4 = Generic::(0); - - - let option = Some(0); - // ^^^^^^ Option - let func = times2; - // ^^^^ fn times2(i32) -> i32 - let closure = |x: i32| x * 2; - // ^^^^^^^ |i32| -> i32 -} - -fn fallible() -> ControlFlow<()> { - let strukt = Struct::try_new()?; -} -"#, - ); - } - - #[test] - fn shows_constructor_type_hints_when_enabled() { - check_types( - r#" -//- minicore: try -use core::ops::ControlFlow; - -struct Struct; -struct TupleStruct(); - -impl Struct { - fn new() -> Self { - Struct - } - fn try_new() -> ControlFlow<(), Self> { - ControlFlow::Continue(Struct) - } -} - -struct Generic(T); -impl Generic { - fn new() -> Self { - Generic(0) - } -} - -fn main() { - let strukt = Struct::new(); - // ^^^^^^ Struct - let tuple_struct = TupleStruct(); - // ^^^^^^^^^^^^ TupleStruct - let generic0 = Generic::new(); - // ^^^^^^^^ Generic - let generic1 = Generic::::new(); - // ^^^^^^^^ Generic - let generic2 = >::new(); - // ^^^^^^^^ Generic -} - -fn fallible() -> ControlFlow<()> { - let strukt = Struct::try_new()?; - // ^^^^^^ Struct -} -"#, - ); - } - - #[test] - fn closures() { - check( - r#" -fn main() { - let mut start = 0; - //^^^^^ i32 - (0..2).for_each(|increment | { start += increment; }); - //^^^^^^^^^ i32 - - let multiply = - //^^^^^^^^ |i32, i32| -> i32 - | a, b| a * b - //^ i32 ^ i32 - - ; - - let _: i32 = multiply(1, 2); - //^ a ^ b - let multiply_ref = &multiply; - //^^^^^^^^^^^^ &|i32, i32| -> i32 - - let return_42 = || 42; - //^^^^^^^^^ || -> i32 - || { 42 }; - //^^ i32 -}"#, - ); - } - - #[test] - fn return_type_hints_for_closure_without_block() { - check_with_config( - InlayHintsConfig { - closure_return_type_hints: ClosureReturnTypeHints::Always, - ..DISABLED_CONFIG - }, - r#" -fn main() { - let a = || { 0 }; - //^^ i32 - let b = || 0; - //^^ i32 -}"#, - ); - } - - #[test] - fn skip_closure_type_hints() { - check_with_config( - InlayHintsConfig { - type_hints: true, - hide_closure_initialization_hints: true, - ..DISABLED_CONFIG - }, - r#" -//- minicore: fn -fn main() { - let multiple_2 = |x: i32| { x * 2 }; - - let multiple_2 = |x: i32| x * 2; - // ^^^^^^^^^^ |i32| -> i32 - - let (not) = (|x: bool| { !x }); - // ^^^ |bool| -> bool - - let (is_zero, _b) = (|x: usize| { x == 0 }, false); - // ^^^^^^^ |usize| -> bool - // ^^ bool - - let plus_one = |x| { x + 1 }; - // ^ u8 - foo(plus_one); - - let add_mul = bar(|x: u8| { x + 1 }); - // ^^^^^^^ impl FnOnce(u8) -> u8 + ?Sized - - let closure = if let Some(6) = add_mul(2).checked_sub(1) { - // ^^^^^^^ fn(i32) -> i32 - |x: i32| { x * 2 } - } else { - |x: i32| { x * 3 } - }; -} - -fn foo(f: impl FnOnce(u8) -> u8) {} - -fn bar(f: impl FnOnce(u8) -> u8) -> impl FnOnce(u8) -> u8 { - move |x: u8| f(x) * 2 -} -"#, - ); - } - - #[test] - fn hint_truncation() { - check_with_config( - InlayHintsConfig { max_length: Some(8), ..TEST_CONFIG }, - r#" -struct Smol(T); - -struct VeryLongOuterName(T); - -fn main() { - let a = Smol(0u32); - //^ Smol - let b = VeryLongOuterName(0usize); - //^ VeryLongOuterName<…> - let c = Smol(Smol(0u32)) - //^ Smol> -}"#, - ); - } - - // Chaining hint tests - - #[test] - fn chaining_hints_ignore_comments() { - check_expect( - InlayHintsConfig { type_hints: false, chaining_hints: true, ..DISABLED_CONFIG }, - r#" -struct A(B); -impl A { fn into_b(self) -> B { self.0 } } -struct B(C); -impl B { fn into_c(self) -> C { self.0 } } -struct C; - -fn main() { - let c = A(B(C)) - .into_b() // This is a comment - // This is another comment - .into_c(); -} -"#, - expect![[r#" - [ - InlayHint { - range: 147..172, - kind: ChainingHint, - label: [ - "B", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 147..172, - ), - ), - }, - InlayHint { - range: 147..154, - kind: ChainingHint, - label: [ - "A", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 147..154, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn chaining_hints_without_newlines() { - check_chains( - r#" -struct A(B); -impl A { fn into_b(self) -> B { self.0 } } -struct B(C); -impl B { fn into_c(self) -> C { self.0 } } -struct C; - -fn main() { - let c = A(B(C)).into_b().into_c(); -}"#, - ); - } - - #[test] - fn struct_access_chaining_hints() { - check_expect( - InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, - r#" -struct A { pub b: B } -struct B { pub c: C } -struct C(pub bool); -struct D; - -impl D { - fn foo(&self) -> i32 { 42 } -} - -fn main() { - let x = A { b: B { c: C(true) } } - .b - .c - .0; - let x = D - .foo(); -}"#, - expect![[r#" - [ - InlayHint { - range: 143..190, - kind: ChainingHint, - label: [ - "C", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 143..190, - ), - ), - }, - InlayHint { - range: 143..179, - kind: ChainingHint, - label: [ - "B", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 143..179, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn generic_chaining_hints() { - check_expect( - InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, - r#" -struct A(T); -struct B(T); -struct C(T); -struct X(T, R); - -impl A { - fn new(t: T) -> Self { A(t) } - fn into_b(self) -> B { B(self.0) } -} -impl B { - fn into_c(self) -> C { C(self.0) } -} -fn main() { - let c = A::new(X(42, true)) - .into_b() - .into_c(); -} -"#, - expect![[r#" - [ - InlayHint { - range: 246..283, - kind: ChainingHint, - label: [ - "B>", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 246..283, - ), - ), - }, - InlayHint { - range: 246..265, - kind: ChainingHint, - label: [ - "A>", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 246..265, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn shorten_iterator_chaining_hints() { - check_expect( - InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, - r#" -//- minicore: iterators -use core::iter; - -struct MyIter; - -impl Iterator for MyIter { - type Item = (); - fn next(&mut self) -> Option { - None - } -} - -fn main() { - let _x = MyIter.by_ref() - .take(5) - .by_ref() - .take(5) - .by_ref(); -} -"#, - expect![[r#" - [ - InlayHint { - range: 174..241, - kind: ChainingHint, - label: [ - "impl Iterator", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 174..241, - ), - ), - }, - InlayHint { - range: 174..224, - kind: ChainingHint, - label: [ - "impl Iterator", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 174..224, - ), - ), - }, - InlayHint { - range: 174..206, - kind: ChainingHint, - label: [ - "impl Iterator", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 174..206, - ), - ), - }, - InlayHint { - range: 174..189, - kind: ChainingHint, - label: [ - "&mut MyIter", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 174..189, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn hints_in_attr_call() { - check_expect( - TEST_CONFIG, - r#" -//- proc_macros: identity, input_replace -struct Struct; -impl Struct { - fn chain(self) -> Self { - self - } -} -#[proc_macros::identity] -fn main() { - let strukt = Struct; - strukt - .chain() - .chain() - .chain(); - Struct::chain(strukt); -} -"#, - expect![[r#" - [ - InlayHint { - range: 124..130, - kind: TypeHint, - label: [ - "Struct", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 124..130, - ), - ), - }, - InlayHint { - range: 145..185, - kind: ChainingHint, - label: [ - "Struct", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 145..185, - ), - ), - }, - InlayHint { - range: 145..168, - kind: ChainingHint, - label: [ - "Struct", - ], - tooltip: Some( - HoverRanged( - FileId( - 0, - ), - 145..168, - ), - ), - }, - InlayHint { - range: 222..228, - kind: ParameterHint, - label: [ - "self", - ], - tooltip: Some( - HoverOffset( - FileId( - 0, - ), - 42, - ), - ), - }, - ] - "#]], - ); - } - - #[test] - fn hints_lifetimes() { - check( - r#" -fn empty() {} - -fn no_gpl(a: &()) {} - //^^^^^^<'0> - // ^'0 -fn empty_gpl<>(a: &()) {} - // ^'0 ^'0 -fn partial<'b>(a: &(), b: &'b ()) {} -// ^'0, $ ^'0 -fn partial<'a>(a: &'a (), b: &()) {} -// ^'0, $ ^'0 - -fn single_ret(a: &()) -> &() {} -// ^^^^^^^^^^<'0> - // ^'0 ^'0 -fn full_mul(a: &(), b: &()) {} -// ^^^^^^^^<'0, '1> - // ^'0 ^'1 - -fn foo<'c>(a: &'c ()) -> &() {} - // ^'c - -fn nested_in(a: & &X< &()>) {} -// ^^^^^^^^^<'0, '1, '2> - //^'0 ^'1 ^'2 -fn nested_out(a: &()) -> & &X< &()>{} -// ^^^^^^^^^^<'0> - //^'0 ^'0 ^'0 ^'0 - -impl () { - fn foo(&self) {} - // ^^^<'0> - // ^'0 - fn foo(&self) -> &() {} - // ^^^<'0> - // ^'0 ^'0 - fn foo(&self, a: &()) -> &() {} - // ^^^<'0, '1> - // ^'0 ^'1 ^'0 -} -"#, - ); - } - - #[test] - fn hints_lifetimes_named() { - check_with_config( - InlayHintsConfig { param_names_for_lifetime_elision_hints: true, ..TEST_CONFIG }, - r#" -fn nested_in<'named>(named: & &X< &()>) {} -// ^'named1, 'named2, 'named3, $ - //^'named1 ^'named2 ^'named3 -"#, - ); - } - - #[test] - fn hints_lifetimes_trivial_skip() { - check_with_config( - InlayHintsConfig { - lifetime_elision_hints: LifetimeElisionHints::SkipTrivial, - ..TEST_CONFIG - }, - r#" -fn no_gpl(a: &()) {} -fn empty_gpl<>(a: &()) {} -fn partial<'b>(a: &(), b: &'b ()) {} -fn partial<'a>(a: &'a (), b: &()) {} - -fn single_ret(a: &()) -> &() {} -// ^^^^^^^^^^<'0> - // ^'0 ^'0 -fn full_mul(a: &(), b: &()) {} - -fn foo<'c>(a: &'c ()) -> &() {} - // ^'c - -fn nested_in(a: & &X< &()>) {} -fn nested_out(a: &()) -> & &X< &()>{} -// ^^^^^^^^^^<'0> - //^'0 ^'0 ^'0 ^'0 - -impl () { - fn foo(&self) {} - fn foo(&self) -> &() {} - // ^^^<'0> - // ^'0 ^'0 - fn foo(&self, a: &()) -> &() {} - // ^^^<'0, '1> - // ^'0 ^'1 ^'0 -} -"#, - ); - } - - #[test] - fn hints_lifetimes_static() { - check_with_config( - InlayHintsConfig { - lifetime_elision_hints: LifetimeElisionHints::Always, - ..TEST_CONFIG - }, - r#" -trait Trait {} -static S: &str = ""; -// ^'static -const C: &str = ""; -// ^'static -const C: &dyn Trait = panic!(); -// ^'static - -impl () { - const C: &str = ""; - const C: &dyn Trait = panic!(); -} -"#, - ); - } - - #[test] - fn hints_binding_modes() { - check_with_config( - InlayHintsConfig { binding_mode_hints: true, ..DISABLED_CONFIG }, - r#" -fn __( - (x,): (u32,), - (x,): &(u32,), - //^^^^& - //^ ref - (x,): &mut (u32,) - //^^^^&mut - //^ ref mut -) { - let (x,) = (0,); - let (x,) = &(0,); - //^^^^ & - //^ ref - let (x,) = &mut (0,); - //^^^^ &mut - //^ ref mut - let &mut (x,) = &mut (0,); - let (ref mut x,) = &mut (0,); - //^^^^^^^^^^^^ &mut - let &mut (ref mut x,) = &mut (0,); - let (mut x,) = &mut (0,); - //^^^^^^^^ &mut - match (0,) { - (x,) => () - } - match &(0,) { - (x,) => () - //^^^^ & - //^ ref - } - match &mut (0,) { - (x,) => () - //^^^^ &mut - //^ ref mut - } -}"#, - ); - } - - #[test] - fn hints_closing_brace() { - check_with_config( - InlayHintsConfig { closing_brace_hints_min_lines: Some(2), ..DISABLED_CONFIG }, - r#" -fn a() {} - -fn f() { -} // no hint unless `}` is the last token on the line - -fn g() { - } -//^ fn g - -fn h(with: T, arguments: u8, ...) { - } -//^ fn h - -trait Tr { - fn f(); - fn g() { - } - //^ fn g - } -//^ trait Tr -impl Tr for () { - } -//^ impl Tr for () -impl dyn Tr { - } -//^ impl dyn Tr - -static S0: () = 0; -static S1: () = {}; -static S2: () = { - }; -//^ static S2 -const _: () = { - }; -//^ const _ - -mod m { - } -//^ mod m - -m! {} -m!(); -m!( - ); -//^ m! - -m! { - } -//^ m! - -fn f() { - let v = vec![ - ]; - } -//^ 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/src/tools/rust-analyzer/crates/ide/src/inlay_hints/adjustment.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/adjustment.rs new file mode 100644 index 000000000000..bdd7c05e008c --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/adjustment.rs @@ -0,0 +1,630 @@ +//! Implementation of "adjustment" inlay hints: +//! ```no_run +//! let _: u32 = /* */ loop {}; +//! let _: &u32 = /* &* */ &mut 0; +//! ``` +use hir::{Adjust, AutoBorrow, Mutability, OverloadedDeref, PointerCast, Safety, Semantics}; +use ide_db::RootDatabase; + +use syntax::{ + ast::{self, make, AstNode}, + ted, +}; + +use crate::{AdjustmentHints, AdjustmentHintsMode, InlayHint, InlayHintsConfig, InlayKind}; + +pub(super) fn hints( + acc: &mut Vec, + sema: &Semantics<'_, RootDatabase>, + config: &InlayHintsConfig, + expr: &ast::Expr, +) -> Option<()> { + if config.adjustment_hints_hide_outside_unsafe && !sema.is_inside_unsafe(expr) { + return None; + } + + if config.adjustment_hints == AdjustmentHints::Never { + return None; + } + + // These inherit from the inner expression which would result in duplicate hints + if let ast::Expr::ParenExpr(_) + | ast::Expr::IfExpr(_) + | ast::Expr::BlockExpr(_) + | ast::Expr::MatchExpr(_) = expr + { + return None; + } + + 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 (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 { + range: expr.syntax().text_range(), + kind: InlayKind::OpeningParenthesis, + label: "(".into(), + tooltip: None, + }); + } + + if 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 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; + } + + // FIXME: Add some nicer tooltips to each of these + let text = match adjustment.kind { + 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: if postfix { + InlayKind::AdjustmentHintPostfix + } else { + InlayKind::AdjustmentHint + }, + label: if postfix { format!(".{}", text.trim_end()).into() } else { text.into() }, + tooltip: None, + }); + } + if !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, + label: ")".into(), + tooltip: None, + }); + } + 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) { + // 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. + // + // 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 = { + // `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::{ + inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, + AdjustmentHints, AdjustmentHintsMode, InlayHintsConfig, + }; + + #[test] + fn adjustment_hints() { + check_with_config( + InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, ..DISABLED_CONFIG }, + r#" +//- minicore: coerce_unsized, fn +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(); + + // 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 adjustment_hints_postfix() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_mode: AdjustmentHintsMode::Postfix, + ..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 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( + InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, ..DISABLED_CONFIG }, + r#" +fn never() -> ! { + return loop {}; +} + +fn or_else() { + let () = () else { return }; +} + "#, + ) + } + + #[test] + fn adjustment_hints_unsafe_only() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_hide_outside_unsafe: true, + ..DISABLED_CONFIG + }, + r#" +unsafe fn enabled() { + f(&&()); + //^^^^& + //^^^^* + //^^^^* +} + +fn disabled() { + f(&&()); +} + +fn mixed() { + f(&&()); + + unsafe { + f(&&()); + //^^^^& + //^^^^* + //^^^^* + } +} + +const _: () = { + f(&&()); + + unsafe { + f(&&()); + //^^^^& + //^^^^* + //^^^^* + } +}; + +static STATIC: () = { + f(&&()); + + unsafe { + f(&&()); + //^^^^& + //^^^^* + //^^^^* + } +}; + +enum E { + Disable = { f(&&()); 0 }, + Enable = unsafe { f(&&()); 1 }, + //^^^^& + //^^^^* + //^^^^* +} + +const fn f(_: &()) {} + "#, + ) + } + + #[test] + fn adjustment_hints_unsafe_only_with_item() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_hide_outside_unsafe: true, + ..DISABLED_CONFIG + }, + r#" +fn a() { + struct Struct; + impl Struct { + fn by_ref(&self) {} + } + + _ = Struct.by_ref(); + + _ = unsafe { Struct.by_ref() }; + //^^^^^^( + //^^^^^^& + //^^^^^^) +} + "#, + ); + } + + #[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; + //^^^^^^ +} + "#, + ) + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/bind_pat.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/bind_pat.rs new file mode 100644 index 000000000000..adec19c765a1 --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/bind_pat.rs @@ -0,0 +1,978 @@ +//! Implementation of "type" inlay hints: +//! ```no_run +//! fn f(a: i32, b: i32) -> i32 { a + b } +//! let _x /* i32 */= f(4, 4); +//! ``` +use hir::{Semantics, TypeInfo}; +use ide_db::{base_db::FileId, famous_defs::FamousDefs, RootDatabase}; + +use itertools::Itertools; +use syntax::{ + ast::{self, AstNode, HasName}, + match_ast, +}; + +use crate::{ + inlay_hints::closure_has_block_body, InlayHint, InlayHintsConfig, InlayKind, InlayTooltip, +}; + +use super::label_of_ty; + +pub(super) fn hints( + acc: &mut Vec, + famous_defs @ FamousDefs(sema, _): &FamousDefs<'_, '_>, + config: &InlayHintsConfig, + file_id: FileId, + pat: &ast::IdentPat, +) -> Option<()> { + if !config.type_hints { + return None; + } + + let descended = sema.descend_node_into_attributes(pat.clone()).pop(); + let desc_pat = descended.as_ref().unwrap_or(pat); + let ty = sema.type_of_pat(&desc_pat.clone().into())?.original; + + if should_not_display_type_hint(sema, config, pat, &ty) { + return None; + } + + let label = label_of_ty(famous_defs, config, ty)?; + + if config.hide_named_constructor_hints + && is_named_constructor(sema, pat, &label.to_string()).is_some() + { + return None; + } + + acc.push(InlayHint { + range: match pat.name() { + Some(name) => name.syntax().text_range(), + None => pat.syntax().text_range(), + }, + kind: InlayKind::TypeHint, + label, + tooltip: pat + .name() + .map(|it| it.syntax().text_range()) + .map(|it| InlayTooltip::HoverRanged(file_id, it)), + }); + + Some(()) +} + +fn should_not_display_type_hint( + sema: &Semantics<'_, RootDatabase>, + config: &InlayHintsConfig, + bind_pat: &ast::IdentPat, + pat_ty: &hir::Type, +) -> bool { + let db = sema.db; + + if pat_ty.is_unknown() { + return true; + } + + if let Some(hir::Adt::Struct(s)) = pat_ty.as_adt() { + if s.fields(db).is_empty() && s.name(db).to_smol_str() == bind_pat.to_string() { + return true; + } + } + + if config.hide_closure_initialization_hints { + if let Some(parent) = bind_pat.syntax().parent() { + 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; + } + } + } + } + } + + for node in bind_pat.syntax().ancestors() { + match_ast! { + match node { + ast::LetStmt(it) => return it.ty().is_some(), + // FIXME: We might wanna show type hints in parameters for non-top level patterns as well + ast::Param(it) => return it.ty().is_some(), + ast::MatchArm(_) => return pat_is_enum_variant(db, bind_pat, pat_ty), + ast::LetExpr(_) => return pat_is_enum_variant(db, bind_pat, pat_ty), + ast::IfExpr(_) => return false, + ast::WhileExpr(_) => return false, + ast::ForExpr(it) => { + // We *should* display hint only if user provided "in {expr}" and we know the type of expr (and it's not unit). + // Type of expr should be iterable. + return it.in_token().is_none() || + it.iterable() + .and_then(|iterable_expr| sema.type_of_expr(&iterable_expr)) + .map(TypeInfo::original) + .map_or(true, |iterable_ty| iterable_ty.is_unknown() || iterable_ty.is_unit()) + }, + _ => (), + } + } + } + false +} + +fn is_named_constructor( + sema: &Semantics<'_, RootDatabase>, + pat: &ast::IdentPat, + ty_name: &str, +) -> Option<()> { + let let_node = pat.syntax().parent()?; + let expr = match_ast! { + match let_node { + ast::LetStmt(it) => it.initializer(), + ast::LetExpr(it) => it.expr(), + _ => None, + } + }?; + + let expr = sema.descend_node_into_attributes(expr.clone()).pop().unwrap_or(expr); + // unwrap postfix expressions + let expr = match expr { + ast::Expr::TryExpr(it) => it.expr(), + ast::Expr::AwaitExpr(it) => it.expr(), + expr => Some(expr), + }?; + let expr = match expr { + ast::Expr::CallExpr(call) => match call.expr()? { + ast::Expr::PathExpr(path) => path, + _ => return None, + }, + ast::Expr::PathExpr(path) => path, + _ => return None, + }; + let path = expr.path()?; + + let callable = sema.type_of_expr(&ast::Expr::PathExpr(expr))?.original.as_callable(sema.db); + let callable_kind = callable.map(|it| it.kind()); + let qual_seg = match callable_kind { + Some(hir::CallableKind::Function(_) | hir::CallableKind::TupleEnumVariant(_)) => { + path.qualifier()?.segment() + } + _ => path.segment(), + }?; + + 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(", ")), + None => name_ref.to_string(), + } + } + ast::PathSegmentKind::Type { type_ref: Some(ty), trait_ref: None } => ty.to_string(), + _ => return None, + }; + (ctor_name == ty_name).then_some(()) +} + +fn pat_is_enum_variant(db: &RootDatabase, bind_pat: &ast::IdentPat, pat_ty: &hir::Type) -> bool { + if let Some(hir::Adt::Enum(enum_data)) = pat_ty.as_adt() { + let pat_text = bind_pat.to_string(); + enum_data + .variants(db) + .into_iter() + .map(|variant| variant.name(db).to_smol_str()) + .any(|enum_name| enum_name == pat_text) + } else { + false + } +} + +#[cfg(test)] +mod tests { + // This module also contains tests for super::closure_ret + + use expect_test::expect; + use syntax::{TextRange, TextSize}; + use test_utils::extract_annotations; + + use crate::{fixture, inlay_hints::InlayHintsConfig}; + + use crate::inlay_hints::tests::{ + check, check_expect, check_with_config, DISABLED_CONFIG, DISABLED_CONFIG_WITH_LINKS, + TEST_CONFIG, + }; + use crate::ClosureReturnTypeHints; + + #[track_caller] + fn check_types(ra_fixture: &str) { + check_with_config(InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, ra_fixture); + } + + #[test] + fn type_hints_only() { + check_types( + r#" +fn foo(a: i32, b: i32) -> i32 { a + b } +fn main() { + let _x = foo(4, 4); + //^^ i32 +}"#, + ); + } + + #[test] + fn type_hints_bindings_after_at() { + check_types( + r#" +//- minicore: option +fn main() { + let ref foo @ bar @ ref mut baz = 0; + //^^^ &i32 + //^^^ i32 + //^^^ &mut i32 + let [x @ ..] = [0]; + //^ [i32; 1] + if let x @ Some(_) = Some(0) {} + //^ Option + let foo @ (bar, baz) = (3, 3); + //^^^ (i32, i32) + //^^^ i32 + //^^^ i32 +}"#, + ); + } + + #[test] + fn default_generic_types_should_not_be_displayed() { + check( + r#" +struct Test { k: K, t: T } + +fn main() { + let zz = Test { t: 23u8, k: 33 }; + //^^ Test + let zz_ref = &zz; + //^^^^^^ &Test + let test = || zz; + //^^^^ || -> Test +}"#, + ); + } + + #[test] + fn shorten_iterators_in_associated_params() { + check_types( + r#" +//- minicore: iterators +use core::iter; + +pub struct SomeIter {} + +impl SomeIter { + pub fn new() -> Self { SomeIter {} } + pub fn push(&mut self, t: T) {} +} + +impl Iterator for SomeIter { + type Item = T; + fn next(&mut self) -> Option { + None + } +} + +fn main() { + let mut some_iter = SomeIter::new(); + //^^^^^^^^^ SomeIter>> + some_iter.push(iter::repeat(2).take(2)); + let iter_of_iters = some_iter.take(2); + //^^^^^^^^^^^^^ impl Iterator> +} +"#, + ); + } + + #[test] + fn iterator_hint_regression_issue_12674() { + // Ensure we don't crash while solving the projection type of iterators. + check_expect( + InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG_WITH_LINKS }, + r#" +//- minicore: iterators +struct S(T); +impl S { + fn iter(&self) -> Iter<'_, T> { loop {} } +} +struct Iter<'a, T: 'a>(&'a T); +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option { loop {} } +} +struct Container<'a> { + elements: S<&'a str>, +} +struct SliceIter<'a, T>(&'a T); +impl<'a, T> Iterator for SliceIter<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option { loop {} } +} + +fn main(a: SliceIter<'_, Container>) { + a + .filter_map(|c| Some(c.elements.iter().filter_map(|v| Some(v)))) + .map(|e| e); +} + "#, + expect![[r#" + [ + InlayHint { + range: 484..554, + kind: ChainingHint, + label: [ + "impl Iterator>", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 484..554, + ), + ), + }, + InlayHint { + range: 484..485, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "SliceIter", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 289..298, + }, + ), + }, + "<", + InlayHintLabelPart { + text: "Container", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 238..247, + }, + ), + }, + ">", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 484..485, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn infer_call_method_return_associated_types_with_generic() { + check_types( + r#" + pub trait Default { + fn default() -> Self; + } + pub trait Foo { + type Bar: Default; + } + + pub fn quux() -> T::Bar { + let y = Default::default(); + //^ ::Bar + + y + } + "#, + ); + } + + #[test] + fn fn_hints() { + check_types( + r#" +//- minicore: fn, sized +fn foo() -> impl Fn() { loop {} } +fn foo1() -> impl Fn(f64) { loop {} } +fn foo2() -> impl Fn(f64, f64) { loop {} } +fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} } +fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} } +fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} } +fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} } +fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} } + +fn main() { + let foo = foo(); + // ^^^ impl Fn() + let foo = foo1(); + // ^^^ impl Fn(f64) + let foo = foo2(); + // ^^^ impl Fn(f64, f64) + let foo = foo3(); + // ^^^ impl Fn(f64, f64) -> u32 + let foo = foo4(); + // ^^^ &dyn Fn(f64, f64) -> u32 + let foo = foo5(); + // ^^^ &dyn Fn(&dyn Fn(f64, f64) -> u32, f64) -> u32 + let foo = foo6(); + // ^^^ impl Fn(f64, f64) -> u32 + let foo = foo7(); + // ^^^ *const impl Fn(f64, f64) -> u32 +} +"#, + ) + } + + #[test] + fn check_hint_range_limit() { + let fixture = r#" + //- minicore: fn, sized + fn foo() -> impl Fn() { loop {} } + fn foo1() -> impl Fn(f64) { loop {} } + fn foo2() -> impl Fn(f64, f64) { loop {} } + fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} } + fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} } + fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} } + fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} } + fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} } + + fn main() { + let foo = foo(); + let foo = foo1(); + let foo = foo2(); + // ^^^ impl Fn(f64, f64) + let foo = foo3(); + // ^^^ impl Fn(f64, f64) -> u32 + let foo = foo4(); + let foo = foo5(); + let foo = foo6(); + let foo = foo7(); + } + "#; + let (analysis, file_id) = fixture::file(fixture); + let expected = extract_annotations(&analysis.file_text(file_id).unwrap()); + let inlay_hints = analysis + .inlay_hints( + &InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, + file_id, + Some(TextRange::new(TextSize::from(500), TextSize::from(600))), + ) + .unwrap(); + let actual = + inlay_hints.into_iter().map(|it| (it.range, it.label.to_string())).collect::>(); + assert_eq!(expected, actual, "\nExpected:\n{expected:#?}\n\nActual:\n{actual:#?}"); + } + + #[test] + fn fn_hints_ptr_rpit_fn_parentheses() { + check_types( + r#" +//- minicore: fn, sized +trait Trait {} + +fn foo1() -> *const impl Fn() { loop {} } +fn foo2() -> *const (impl Fn() + Sized) { loop {} } +fn foo3() -> *const (impl Fn() + ?Sized) { loop {} } +fn foo4() -> *const (impl Sized + Fn()) { loop {} } +fn foo5() -> *const (impl ?Sized + Fn()) { loop {} } +fn foo6() -> *const (impl Fn() + Trait) { loop {} } +fn foo7() -> *const (impl Fn() + Sized + Trait) { loop {} } +fn foo8() -> *const (impl Fn() + ?Sized + Trait) { loop {} } +fn foo9() -> *const (impl Fn() -> u8 + ?Sized) { loop {} } +fn foo10() -> *const (impl Fn() + Sized + ?Sized) { loop {} } + +fn main() { + let foo = foo1(); + // ^^^ *const impl Fn() + let foo = foo2(); + // ^^^ *const impl Fn() + let foo = foo3(); + // ^^^ *const (impl Fn() + ?Sized) + let foo = foo4(); + // ^^^ *const impl Fn() + let foo = foo5(); + // ^^^ *const (impl Fn() + ?Sized) + let foo = foo6(); + // ^^^ *const (impl Fn() + Trait) + let foo = foo7(); + // ^^^ *const (impl Fn() + Trait) + let foo = foo8(); + // ^^^ *const (impl Fn() + Trait + ?Sized) + let foo = foo9(); + // ^^^ *const (impl Fn() -> u8 + ?Sized) + let foo = foo10(); + // ^^^ *const impl Fn() +} +"#, + ) + } + + #[test] + fn unit_structs_have_no_type_hints() { + check_types( + r#" +//- minicore: result +struct SyntheticSyntax; + +fn main() { + match Ok(()) { + Ok(_) => (), + Err(SyntheticSyntax) => (), + } +}"#, + ); + } + + #[test] + fn let_statement() { + check_types( + r#" +#[derive(PartialEq)] +enum Option { None, Some(T) } + +#[derive(PartialEq)] +struct Test { a: Option, b: u8 } + +fn main() { + struct InnerStruct {} + + let test = 54; + //^^^^ i32 + let test: i32 = 33; + let mut test = 33; + //^^^^ i32 + let _ = 22; + let test = "test"; + //^^^^ &str + let test = InnerStruct {}; + //^^^^ InnerStruct + + let test = unresolved(); + + let test = (42, 'a'); + //^^^^ (i32, char) + let (a, (b, (c,)) = (2, (3, (9.2,)); + //^ i32 ^ i32 ^ f64 + let &x = &92; + //^ i32 +}"#, + ); + } + + #[test] + fn if_expr() { + check_types( + r#" +//- minicore: option +struct Test { a: Option, b: u8 } + +fn main() { + let test = Some(Test { a: Some(3), b: 1 }); + //^^^^ Option + if let None = &test {}; + if let test = &test {}; + //^^^^ &Option + if let Some(test) = &test {}; + //^^^^ &Test + if let Some(Test { a, b }) = &test {}; + //^ &Option ^ &u8 + if let Some(Test { a: x, b: y }) = &test {}; + //^ &Option ^ &u8 + if let Some(Test { a: Some(x), b: y }) = &test {}; + //^ &u32 ^ &u8 + if let Some(Test { a: None, b: y }) = &test {}; + //^ &u8 + if let Some(Test { b: y, .. }) = &test {}; + //^ &u8 + if test == None {} +}"#, + ); + } + + #[test] + fn while_expr() { + check_types( + r#" +//- minicore: option +struct Test { a: Option, b: u8 } + +fn main() { + let test = Some(Test { a: Some(3), b: 1 }); + //^^^^ Option + while let Some(Test { a: Some(x), b: y }) = &test {}; + //^ &u32 ^ &u8 +}"#, + ); + } + + #[test] + fn match_arm_list() { + check_types( + r#" +//- minicore: option +struct Test { a: Option, b: u8 } + +fn main() { + match Some(Test { a: Some(3), b: 1 }) { + None => (), + test => (), + //^^^^ Option + Some(Test { a: Some(x), b: y }) => (), + //^ u32 ^ u8 + _ => {} + } +}"#, + ); + } + + #[test] + fn complete_for_hint() { + check_types( + r#" +//- minicore: iterator +pub struct Vec {} + +impl Vec { + pub fn new() -> Self { Vec {} } + pub fn push(&mut self, t: T) {} +} + +impl IntoIterator for Vec { + type Item = T; + type IntoIter = IntoIter; +} + +struct IntoIter {} + +impl Iterator for IntoIter { + type Item = T; +} + +fn main() { + let mut data = Vec::new(); + //^^^^ Vec<&str> + data.push("foo"); + for i in data { + //^ &str + let z = i; + //^ &str + } +} +"#, + ); + } + + #[test] + fn multi_dyn_trait_bounds() { + check_types( + r#" +pub struct Vec {} + +impl Vec { + pub fn new() -> Self { Vec {} } +} + +pub struct Box {} + +trait Display {} +auto trait Sync {} + +fn main() { + // The block expression wrapping disables the constructor hint hiding logic + let _v = { Vec::>::new() }; + //^^ Vec> + let _v = { Vec::>::new() }; + //^^ Vec> + let _v = { Vec::>::new() }; + //^^ Vec> +} +"#, + ); + } + + #[test] + fn shorten_iterator_hints() { + check_types( + r#" +//- minicore: iterators +use core::iter; + +struct MyIter; + +impl Iterator for MyIter { + type Item = (); + fn next(&mut self) -> Option { + None + } +} + +fn main() { + let _x = MyIter; + //^^ MyIter + let _x = iter::repeat(0); + //^^ impl Iterator + fn generic(t: T) { + let _x = iter::repeat(t); + //^^ impl Iterator + let _chained = iter::repeat(t).take(10); + //^^^^^^^^ impl Iterator + } +} +"#, + ); + } + + #[test] + fn skip_constructor_and_enum_type_hints() { + check_with_config( + InlayHintsConfig { + type_hints: true, + hide_named_constructor_hints: true, + ..DISABLED_CONFIG + }, + r#" +//- minicore: try, option +use core::ops::ControlFlow; + +mod x { + pub mod y { pub struct Foo; } + pub struct Foo; + pub enum AnotherEnum { + Variant() + }; +} +struct Struct; +struct TupleStruct(); + +impl Struct { + fn new() -> Self { + Struct + } + fn try_new() -> ControlFlow<(), Self> { + ControlFlow::Continue(Struct) + } +} + +struct Generic(T); +impl Generic { + fn new() -> Self { + Generic(0) + } +} + +enum Enum { + Variant(u32) +} + +fn times2(value: i32) -> i32 { + 2 * value +} + +fn main() { + let enumb = Enum::Variant(0); + + let strukt = x::Foo; + let strukt = x::y::Foo; + let strukt = Struct; + let strukt = Struct::new(); + + let tuple_struct = TupleStruct(); + + let generic0 = Generic::new(); + // ^^^^^^^^ Generic + let generic1 = Generic(0); + // ^^^^^^^^ Generic + let generic2 = Generic::::new(); + let generic3 = >::new(); + let generic4 = Generic::(0); + + + let option = Some(0); + // ^^^^^^ Option + let func = times2; + // ^^^^ fn times2(i32) -> i32 + let closure = |x: i32| x * 2; + // ^^^^^^^ |i32| -> i32 +} + +fn fallible() -> ControlFlow<()> { + let strukt = Struct::try_new()?; +} +"#, + ); + } + + #[test] + fn shows_constructor_type_hints_when_enabled() { + check_types( + r#" +//- minicore: try +use core::ops::ControlFlow; + +struct Struct; +struct TupleStruct(); + +impl Struct { + fn new() -> Self { + Struct + } + fn try_new() -> ControlFlow<(), Self> { + ControlFlow::Continue(Struct) + } +} + +struct Generic(T); +impl Generic { + fn new() -> Self { + Generic(0) + } +} + +fn main() { + let strukt = Struct::new(); + // ^^^^^^ Struct + let tuple_struct = TupleStruct(); + // ^^^^^^^^^^^^ TupleStruct + let generic0 = Generic::new(); + // ^^^^^^^^ Generic + let generic1 = Generic::::new(); + // ^^^^^^^^ Generic + let generic2 = >::new(); + // ^^^^^^^^ Generic +} + +fn fallible() -> ControlFlow<()> { + let strukt = Struct::try_new()?; + // ^^^^^^ Struct +} +"#, + ); + } + + #[test] + fn closures() { + check( + r#" +fn main() { + let mut start = 0; + //^^^^^ i32 + (0..2).for_each(|increment | { start += increment; }); + //^^^^^^^^^ i32 + + let multiply = + //^^^^^^^^ |i32, i32| -> i32 + | a, b| a * b + //^ i32 ^ i32 + + ; + + let _: i32 = multiply(1, 2); + //^ a ^ b + let multiply_ref = &multiply; + //^^^^^^^^^^^^ &|i32, i32| -> i32 + + let return_42 = || 42; + //^^^^^^^^^ || -> i32 + || { 42 }; + //^^ i32 +}"#, + ); + } + + #[test] + fn return_type_hints_for_closure_without_block() { + check_with_config( + InlayHintsConfig { + closure_return_type_hints: ClosureReturnTypeHints::Always, + ..DISABLED_CONFIG + }, + r#" +fn main() { + let a = || { 0 }; + //^^ i32 + let b = || 0; + //^^ i32 +}"#, + ); + } + + #[test] + fn skip_closure_type_hints() { + check_with_config( + InlayHintsConfig { + type_hints: true, + hide_closure_initialization_hints: true, + ..DISABLED_CONFIG + }, + r#" +//- minicore: fn +fn main() { + let multiple_2 = |x: i32| { x * 2 }; + + let multiple_2 = |x: i32| x * 2; + // ^^^^^^^^^^ |i32| -> i32 + + let (not) = (|x: bool| { !x }); + // ^^^ |bool| -> bool + + let (is_zero, _b) = (|x: usize| { x == 0 }, false); + // ^^^^^^^ |usize| -> bool + // ^^ bool + + let plus_one = |x| { x + 1 }; + // ^ u8 + foo(plus_one); + + let add_mul = bar(|x: u8| { x + 1 }); + // ^^^^^^^ impl FnOnce(u8) -> u8 + ?Sized + + let closure = if let Some(6) = add_mul(2).checked_sub(1) { + // ^^^^^^^ fn(i32) -> i32 + |x: i32| { x * 2 } + } else { + |x: i32| { x * 3 } + }; +} + +fn foo(f: impl FnOnce(u8) -> u8) {} + +fn bar(f: impl FnOnce(u8) -> u8) -> impl FnOnce(u8) -> u8 { + move |x: u8| f(x) * 2 +} +"#, + ); + } + + #[test] + fn hint_truncation() { + check_with_config( + InlayHintsConfig { max_length: Some(8), ..TEST_CONFIG }, + r#" +struct Smol(T); + +struct VeryLongOuterName(T); + +fn main() { + let a = Smol(0u32); + //^ Smol + let b = VeryLongOuterName(0usize); + //^ VeryLongOuterName<…> + let c = Smol(Smol(0u32)) + //^ Smol> +}"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/binding_mode.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/binding_mode.rs new file mode 100644 index 000000000000..a0166d0048ab --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/binding_mode.rs @@ -0,0 +1,142 @@ +//! Implementation of "binding mode" inlay hints: +//! ```no_run +//! let /* & */ (/* ref */ x,) = &(0,); +//! ``` +use hir::{Mutability, Semantics}; +use ide_db::RootDatabase; + +use syntax::ast::{self, AstNode}; + +use crate::{InlayHint, InlayHintsConfig, InlayKind, InlayTooltip}; + +pub(super) fn hints( + acc: &mut Vec, + sema: &Semantics<'_, RootDatabase>, + config: &InlayHintsConfig, + pat: &ast::Pat, +) -> Option<()> { + if !config.binding_mode_hints { + return None; + } + + 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(); + let pattern_adjustments = sema.pattern_adjustments(pat); + pattern_adjustments.iter().for_each(|ty| { + let reference = ty.is_reference(); + let mut_reference = ty.is_mutable_reference(); + let r = match (reference, mut_reference) { + (true, true) => "&mut", + (true, false) => "&", + _ => return, + }; + acc.push(InlayHint { + range, + kind: InlayKind::BindingModeHint, + label: r.to_string().into(), + tooltip: Some(InlayTooltip::String("Inferred binding mode".into())), + }); + }); + match pat { + ast::Pat::IdentPat(pat) if pat.ref_token().is_none() && pat.mut_token().is_none() => { + let bm = sema.binding_mode_of_pat(pat)?; + let bm = match bm { + hir::BindingMode::Move => return None, + hir::BindingMode::Ref(Mutability::Mut) => "ref mut", + hir::BindingMode::Ref(Mutability::Shared) => "ref", + }; + acc.push(InlayHint { + 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) if !pattern_adjustments.is_empty() && outer_paren_pat.is_none() => { + 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, + }); + } + _ => (), + } + + Some(()) +} + +#[cfg(test)] +mod tests { + use crate::{ + inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, + InlayHintsConfig, + }; + + #[test] + fn hints_binding_modes() { + check_with_config( + InlayHintsConfig { binding_mode_hints: true, ..DISABLED_CONFIG }, + r#" +fn __( + (x,): (u32,), + (x,): &(u32,), + //^^^^& + //^ ref + (x,): &mut (u32,) + //^^^^&mut + //^ ref mut +) { + let (x,) = (0,); + let (x,) = &(0,); + //^^^^ & + //^ ref + let (x,) = &mut (0,); + //^^^^ &mut + //^ ref mut + let &mut (x,) = &mut (0,); + let (ref mut x,) = &mut (0,); + //^^^^^^^^^^^^ &mut + let &mut (ref mut x,) = &mut (0,); + let (mut x,) = &mut (0,); + //^^^^^^^^ &mut + match (0,) { + (x,) => () + } + match &(0,) { + (x,) | (x,) => (), + //^^^^^^^^^^^& + //^ ref + //^ ref + //^^^^^^^^^^^( + //^^^^^^^^^^^) + ((x,) | (x,)) => (), + //^^^^^^^^^^^^^& + //^ ref + //^ ref + } + match &mut (0,) { + (x,) => () + //^^^^ &mut + //^ ref mut + } +}"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/chaining.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/chaining.rs new file mode 100644 index 000000000000..8810d5d34dbd --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/chaining.rs @@ -0,0 +1,665 @@ +//! Implementation of "chaining" inlay hints. +use ide_db::famous_defs::FamousDefs; +use syntax::{ + ast::{self, AstNode}, + Direction, NodeOrToken, SyntaxKind, T, +}; + +use crate::{FileId, InlayHint, InlayHintsConfig, InlayKind, InlayTooltip}; + +use super::label_of_ty; + +pub(super) fn hints( + acc: &mut Vec, + famous_defs @ FamousDefs(sema, _): &FamousDefs<'_, '_>, + config: &InlayHintsConfig, + file_id: FileId, + expr: &ast::Expr, +) -> Option<()> { + if !config.chaining_hints { + return None; + } + + if matches!(expr, ast::Expr::RecordExpr(_)) { + return None; + } + + let descended = sema.descend_node_into_attributes(expr.clone()).pop(); + let desc_expr = descended.as_ref().unwrap_or(expr); + + let mut tokens = expr + .syntax() + .siblings_with_tokens(Direction::Next) + .filter_map(NodeOrToken::into_token) + .filter(|t| match t.kind() { + SyntaxKind::WHITESPACE if !t.text().contains('\n') => false, + SyntaxKind::COMMENT => false, + _ => true, + }); + + // Chaining can be defined as an expression whose next sibling tokens are newline and dot + // Ignoring extra whitespace and comments + let next = tokens.next()?.kind(); + if next == SyntaxKind::WHITESPACE { + let mut next_next = tokens.next()?.kind(); + while next_next == SyntaxKind::WHITESPACE { + next_next = tokens.next()?.kind(); + } + if next_next == T![.] { + let ty = sema.type_of_expr(desc_expr)?.original; + if ty.is_unknown() { + return None; + } + if matches!(expr, ast::Expr::PathExpr(_)) { + if let Some(hir::Adt::Struct(st)) = ty.as_adt() { + if st.fields(sema.db).is_empty() { + return None; + } + } + } + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::ChainingHint, + label: label_of_ty(famous_defs, config, ty)?, + tooltip: Some(InlayTooltip::HoverRanged(file_id, expr.syntax().text_range())), + }); + } + } + Some(()) +} + +#[cfg(test)] +mod tests { + use expect_test::expect; + + use crate::{ + inlay_hints::tests::{ + check_expect, check_with_config, DISABLED_CONFIG, DISABLED_CONFIG_WITH_LINKS, + TEST_CONFIG, + }, + InlayHintsConfig, + }; + + #[track_caller] + fn check_chains(ra_fixture: &str) { + check_with_config(InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, ra_fixture); + } + + #[test] + fn chaining_hints_ignore_comments() { + check_expect( + InlayHintsConfig { + type_hints: false, + chaining_hints: true, + ..DISABLED_CONFIG_WITH_LINKS + }, + r#" +struct A(B); +impl A { fn into_b(self) -> B { self.0 } } +struct B(C); +impl B { fn into_c(self) -> C { self.0 } } +struct C; + +fn main() { + let c = A(B(C)) + .into_b() // This is a comment + // This is another comment + .into_c(); +} +"#, + expect![[r#" + [ + InlayHint { + range: 147..172, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "B", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 63..64, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 147..172, + ), + ), + }, + InlayHint { + range: 147..154, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "A", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 7..8, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 147..154, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn chaining_hints_without_newlines() { + check_chains( + r#" +struct A(B); +impl A { fn into_b(self) -> B { self.0 } } +struct B(C); +impl B { fn into_c(self) -> C { self.0 } } +struct C; + +fn main() { + let c = A(B(C)).into_b().into_c(); +}"#, + ); + } + + #[test] + fn disabled_location_links() { + check_expect( + InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG }, + r#" + struct A { pub b: B } + struct B { pub c: C } + struct C(pub bool); + struct D; + + impl D { + fn foo(&self) -> i32 { 42 } + } + + fn main() { + let x = A { b: B { c: C(true) } } + .b + .c + .0; + let x = D + .foo(); + }"#, + expect![[r#" + [ + InlayHint { + range: 143..190, + kind: ChainingHint, + label: [ + "C", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 143..190, + ), + ), + }, + InlayHint { + range: 143..179, + kind: ChainingHint, + label: [ + "B", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 143..179, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn struct_access_chaining_hints() { + check_expect( + InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG_WITH_LINKS }, + r#" +struct A { pub b: B } +struct B { pub c: C } +struct C(pub bool); +struct D; + +impl D { + fn foo(&self) -> i32 { 42 } +} + +fn main() { + let x = A { b: B { c: C(true) } } + .b + .c + .0; + let x = D + .foo(); +}"#, + expect![[r#" + [ + InlayHint { + range: 143..190, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "C", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 51..52, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 143..190, + ), + ), + }, + InlayHint { + range: 143..179, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "B", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 29..30, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 143..179, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn generic_chaining_hints() { + check_expect( + InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG_WITH_LINKS }, + r#" +struct A(T); +struct B(T); +struct C(T); +struct X(T, R); + +impl A { + fn new(t: T) -> Self { A(t) } + fn into_b(self) -> B { B(self.0) } +} +impl B { + fn into_c(self) -> C { C(self.0) } +} +fn main() { + let c = A::new(X(42, true)) + .into_b() + .into_c(); +} +"#, + expect![[r#" + [ + InlayHint { + range: 246..283, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "B", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 23..24, + }, + ), + }, + "<", + InlayHintLabelPart { + text: "X", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 55..56, + }, + ), + }, + ">", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 246..283, + ), + ), + }, + InlayHint { + range: 246..265, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "A", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 7..8, + }, + ), + }, + "<", + InlayHintLabelPart { + text: "X", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 55..56, + }, + ), + }, + ">", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 246..265, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn shorten_iterator_chaining_hints() { + check_expect( + InlayHintsConfig { chaining_hints: true, ..DISABLED_CONFIG_WITH_LINKS }, + r#" +//- minicore: iterators +use core::iter; + +struct MyIter; + +impl Iterator for MyIter { + type Item = (); + fn next(&mut self) -> Option { + None + } +} + +fn main() { + let _x = MyIter.by_ref() + .take(5) + .by_ref() + .take(5) + .by_ref(); +} +"#, + expect![[r#" + [ + InlayHint { + range: 174..241, + kind: ChainingHint, + label: [ + "impl Iterator", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 174..241, + ), + ), + }, + InlayHint { + range: 174..224, + kind: ChainingHint, + label: [ + "impl Iterator", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 174..224, + ), + ), + }, + InlayHint { + range: 174..206, + kind: ChainingHint, + label: [ + "impl Iterator", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 174..206, + ), + ), + }, + InlayHint { + range: 174..189, + kind: ChainingHint, + label: [ + "&mut ", + InlayHintLabelPart { + text: "MyIter", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 24..30, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 174..189, + ), + ), + }, + ] + "#]], + ); + } + + #[test] + fn hints_in_attr_call() { + check_expect( + TEST_CONFIG, + r#" +//- proc_macros: identity, input_replace +struct Struct; +impl Struct { + fn chain(self) -> Self { + self + } +} +#[proc_macros::identity] +fn main() { + let strukt = Struct; + strukt + .chain() + .chain() + .chain(); + Struct::chain(strukt); +} +"#, + expect![[r#" + [ + InlayHint { + range: 124..130, + kind: TypeHint, + label: [ + "", + InlayHintLabelPart { + text: "Struct", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 7..13, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 124..130, + ), + ), + }, + InlayHint { + range: 145..185, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "Struct", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 7..13, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 145..185, + ), + ), + }, + InlayHint { + range: 145..168, + kind: ChainingHint, + label: [ + "", + InlayHintLabelPart { + text: "Struct", + linked_location: Some( + FileRange { + file_id: FileId( + 0, + ), + range: 7..13, + }, + ), + }, + "", + ], + tooltip: Some( + HoverRanged( + FileId( + 0, + ), + 145..168, + ), + ), + }, + InlayHint { + range: 222..228, + kind: ParameterHint, + label: [ + "self", + ], + tooltip: Some( + HoverOffset( + FileId( + 0, + ), + 42, + ), + ), + }, + ] + "#]], + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closing_brace.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closing_brace.rs new file mode 100644 index 000000000000..e340c64c54b5 --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closing_brace.rs @@ -0,0 +1,196 @@ +//! Implementation of "closing brace" inlay hints: +//! ```no_run +//! fn g() { +//! } /* fn g */ +//! ``` +use hir::{HirDisplay, Semantics}; +use ide_db::{base_db::FileRange, RootDatabase}; +use syntax::{ + ast::{self, AstNode, HasName}, + match_ast, SyntaxKind, SyntaxNode, T, +}; + +use crate::{ + inlay_hints::InlayHintLabelPart, FileId, InlayHint, InlayHintLabel, InlayHintsConfig, InlayKind, +}; + +pub(super) fn hints( + acc: &mut Vec, + sema: &Semantics<'_, RootDatabase>, + config: &InlayHintsConfig, + file_id: FileId, + node: SyntaxNode, +) -> Option<()> { + let min_lines = config.closing_brace_hints_min_lines?; + + let name = |it: ast::Name| it.syntax().text_range(); + + let mut closing_token; + let (label, name_range) = if let Some(item_list) = ast::AssocItemList::cast(node.clone()) { + closing_token = item_list.r_curly_token()?; + + let parent = item_list.syntax().parent()?; + match_ast! { + match parent { + ast::Impl(imp) => { + let imp = sema.to_def(&imp)?; + let ty = imp.self_ty(sema.db); + let trait_ = imp.trait_(sema.db); + let hint_text = match trait_ { + Some(tr) => format!("impl {} for {}", tr.name(sema.db), ty.display_truncated(sema.db, config.max_length)), + None => format!("impl {}", ty.display_truncated(sema.db, config.max_length)), + }; + (hint_text, None) + }, + ast::Trait(tr) => { + (format!("trait {}", tr.name()?), tr.name().map(name)) + }, + _ => return None, + } + } + } else if let Some(list) = ast::ItemList::cast(node.clone()) { + closing_token = list.r_curly_token()?; + + let module = ast::Module::cast(list.syntax().parent()?)?; + (format!("mod {}", module.name()?), module.name().map(name)) + } else if let Some(block) = ast::BlockExpr::cast(node.clone()) { + closing_token = block.stmt_list()?.r_curly_token()?; + + let parent = block.syntax().parent()?; + match_ast! { + match parent { + ast::Fn(it) => { + // FIXME: this could include parameters, but `HirDisplay` prints too much info + // and doesn't respect the max length either, so the hints end up way too long + (format!("fn {}", it.name()?), it.name().map(name)) + }, + ast::Static(it) => (format!("static {}", it.name()?), it.name().map(name)), + ast::Const(it) => { + if it.underscore_token().is_some() { + ("const _".into(), None) + } else { + (format!("const {}", it.name()?), it.name().map(name)) + } + }, + _ => return None, + } + } + } else if let Some(mac) = ast::MacroCall::cast(node.clone()) { + let last_token = mac.syntax().last_token()?; + if last_token.kind() != T![;] && last_token.kind() != SyntaxKind::R_CURLY { + return None; + } + closing_token = last_token; + + ( + format!("{}!", mac.path()?), + mac.path().and_then(|it| it.segment()).map(|it| it.syntax().text_range()), + ) + } else { + return None; + }; + + if let Some(mut next) = closing_token.next_token() { + if next.kind() == T![;] { + if let Some(tok) = next.next_token() { + closing_token = next; + next = tok; + } + } + if !(next.kind() == SyntaxKind::WHITESPACE && next.text().contains('\n')) { + // Only display the hint if the `}` is the last token on the line + return None; + } + } + + let mut lines = 1; + node.text().for_each_chunk(|s| lines += s.matches('\n').count()); + if lines < min_lines { + return None; + } + + let linked_location = config + .location_links + .then(|| name_range.map(|range| FileRange { file_id, range })) + .flatten(); + acc.push(InlayHint { + range: closing_token.text_range(), + kind: InlayKind::ClosingBraceHint, + label: InlayHintLabel { parts: vec![InlayHintLabelPart { text: label, linked_location }] }, + tooltip: None, // provided by label part location + }); + + None +} + +#[cfg(test)] +mod tests { + use crate::{ + inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, + InlayHintsConfig, + }; + + #[test] + fn hints_closing_brace() { + check_with_config( + InlayHintsConfig { closing_brace_hints_min_lines: Some(2), ..DISABLED_CONFIG }, + r#" +fn a() {} + +fn f() { +} // no hint unless `}` is the last token on the line + +fn g() { + } +//^ fn g + +fn h(with: T, arguments: u8, ...) { + } +//^ fn h + +trait Tr { + fn f(); + fn g() { + } + //^ fn g + } +//^ trait Tr +impl Tr for () { + } +//^ impl Tr for () +impl dyn Tr { + } +//^ impl dyn Tr + +static S0: () = 0; +static S1: () = {}; +static S2: () = { + }; +//^ static S2 +const _: () = { + }; +//^ const _ + +mod m { + } +//^ mod m + +m! {} +m!(); +m!( + ); +//^ m! + +m! { + } +//^ m! + +fn f() { + let v = vec![ + ]; + } +//^ fn f +"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closure_ret.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closure_ret.rs new file mode 100644 index 000000000000..d9929beaac0c --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/closure_ret.rs @@ -0,0 +1,49 @@ +//! Implementation of "closure return type" inlay hints. +use ide_db::{base_db::FileId, famous_defs::FamousDefs}; +use syntax::ast::{self, AstNode}; + +use crate::{ + inlay_hints::closure_has_block_body, ClosureReturnTypeHints, InlayHint, InlayHintsConfig, + InlayKind, InlayTooltip, +}; + +use super::label_of_ty; + +pub(super) fn hints( + acc: &mut Vec, + famous_defs @ FamousDefs(sema, _): &FamousDefs<'_, '_>, + config: &InlayHintsConfig, + file_id: FileId, + closure: ast::ClosureExpr, +) -> Option<()> { + if config.closure_return_type_hints == ClosureReturnTypeHints::Never { + return None; + } + + if closure.ret_type().is_some() { + return None; + } + + if !closure_has_block_body(&closure) + && config.closure_return_type_hints == ClosureReturnTypeHints::WithBlock + { + return None; + } + + let param_list = closure.param_list()?; + + 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(); + if ty.is_unit() { + return None; + } + acc.push(InlayHint { + range: param_list.syntax().text_range(), + kind: InlayKind::ClosureReturnTypeHint, + label: label_of_ty(famous_defs, config, ty)?, + tooltip: Some(InlayTooltip::HoverRanged(file_id, param_list.syntax().text_range())), + }); + Some(()) +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs new file mode 100644 index 000000000000..f32c4bdf2883 --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.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/src/tools/rust-analyzer/crates/ide/src/inlay_hints/fn_lifetime_fn.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/fn_lifetime_fn.rs new file mode 100644 index 000000000000..2aa5e3dc734f --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/fn_lifetime_fn.rs @@ -0,0 +1,325 @@ +//! Implementation of "lifetime elision" inlay hints: +//! ```no_run +//! fn example/* <'0> */(a: &/* '0 */()) {} +//! ``` +use ide_db::{syntax_helpers::node_ext::walk_ty, FxHashMap}; +use itertools::Itertools; +use syntax::SmolStr; +use syntax::{ + ast::{self, AstNode, HasGenericParams, HasName}, + SyntaxToken, +}; + +use crate::{InlayHint, InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints}; + +pub(super) fn hints( + acc: &mut Vec, + config: &InlayHintsConfig, + func: ast::Fn, +) -> Option<()> { + if config.lifetime_elision_hints == LifetimeElisionHints::Never { + return None; + } + + let mk_lt_hint = |t: SyntaxToken, label: String| InlayHint { + range: t.text_range(), + kind: InlayKind::LifetimeHint, + label: label.into(), + tooltip: Some(InlayTooltip::String("Elided lifetime".into())), + }; + + let param_list = func.param_list()?; + let generic_param_list = func.generic_param_list(); + let ret_type = func.ret_type(); + let self_param = param_list.self_param().filter(|it| it.amp_token().is_some()); + + let is_elided = |lt: &Option| match lt { + Some(lt) => matches!(lt.text().as_str(), "'_"), + None => true, + }; + + let potential_lt_refs = { + let mut acc: Vec<_> = vec![]; + if let Some(self_param) = &self_param { + let lifetime = self_param.lifetime(); + let is_elided = is_elided(&lifetime); + acc.push((None, self_param.amp_token(), lifetime, is_elided)); + } + param_list.params().filter_map(|it| Some((it.pat(), it.ty()?))).for_each(|(pat, ty)| { + // FIXME: check path types + walk_ty(&ty, &mut |ty| match ty { + ast::Type::RefType(r) => { + let lifetime = r.lifetime(); + let is_elided = is_elided(&lifetime); + acc.push(( + pat.as_ref().and_then(|it| match it { + ast::Pat::IdentPat(p) => p.name(), + _ => None, + }), + 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 + }; + + // allocate names + let mut gen_idx_name = { + let mut gen = (0u8..).map(|idx| match idx { + idx if idx < 10 => SmolStr::from_iter(['\'', (idx + 48) as char]), + idx => format!("'{idx}").into(), + }); + move || gen.next().unwrap_or_default() + }; + let mut allocated_lifetimes = vec![]; + + let mut used_names: FxHashMap = + match config.param_names_for_lifetime_elision_hints { + true => generic_param_list + .iter() + .flat_map(|gpl| gpl.lifetime_params()) + .filter_map(|param| param.lifetime()) + .filter_map(|lt| Some((SmolStr::from(lt.text().as_str().get(1..)?), 0))) + .collect(), + false => Default::default(), + }; + { + let mut potential_lt_refs = potential_lt_refs.iter().filter(|&&(.., is_elided)| is_elided); + if let Some(_) = &self_param { + if let Some(_) = potential_lt_refs.next() { + allocated_lifetimes.push(if config.param_names_for_lifetime_elision_hints { + // self can't be used as a lifetime, so no need to check for collisions + "'self".into() + } else { + gen_idx_name() + }); + } + } + potential_lt_refs.for_each(|(name, ..)| { + let name = match name { + Some(it) if config.param_names_for_lifetime_elision_hints => { + if let Some(c) = used_names.get_mut(it.text().as_str()) { + *c += 1; + SmolStr::from(format!("'{text}{c}", text = it.text().as_str())) + } else { + used_names.insert(it.text().as_str().into(), 0); + SmolStr::from_iter(["\'", it.text().as_str()]) + } + } + _ => gen_idx_name(), + }; + allocated_lifetimes.push(name); + }); + } + + // fetch output lifetime if elision rule applies + let output = match potential_lt_refs.as_slice() { + [(_, _, lifetime, _), ..] if self_param.is_some() || potential_lt_refs.len() == 1 => { + match lifetime { + Some(lt) => match lt.text().as_str() { + "'_" => allocated_lifetimes.get(0).cloned(), + "'static" => None, + name => Some(name.into()), + }, + None => allocated_lifetimes.get(0).cloned(), + } + } + [..] => None, + }; + + if allocated_lifetimes.is_empty() && output.is_none() { + return None; + } + + // apply hints + // apply output if required + let mut is_trivial = true; + if let (Some(output_lt), Some(r)) = (&output, ret_type) { + if let Some(ty) = r.ty() { + walk_ty(&ty, &mut |ty| match ty { + ast::Type::RefType(ty) if ty.lifetime().is_none() => { + if let Some(amp) = ty.amp_token() { + 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, + }) + } + } + + if config.lifetime_elision_hints == LifetimeElisionHints::SkipTrivial && is_trivial { + return None; + } + + let mut a = allocated_lifetimes.iter(); + for (_, amp_token, _, is_elided) in potential_lt_refs { + if is_elided { + let t = amp_token?; + let lt = a.next()?; + acc.push(mk_lt_hint(t, lt.to_string())); + } + } + + // generate generic param list things + match (generic_param_list, allocated_lifetimes.as_slice()) { + (_, []) => (), + (Some(gpl), allocated_lifetimes) => { + let angle_tok = gpl.l_angle_token()?; + let is_empty = gpl.generic_params().next().is_none(); + acc.push(InlayHint { + range: angle_tok.text_range(), + kind: InlayKind::LifetimeHint, + label: format!( + "{}{}", + allocated_lifetimes.iter().format(", "), + if is_empty { "" } else { ", " } + ) + .into(), + tooltip: Some(InlayTooltip::String("Elided lifetimes".into())), + }); + } + (None, allocated_lifetimes) => acc.push(InlayHint { + range: func.name()?.syntax().text_range(), + kind: InlayKind::GenericParamListHint, + label: format!("<{}>", allocated_lifetimes.iter().format(", "),).into(), + tooltip: Some(InlayTooltip::String("Elided lifetimes".into())), + }), + } + Some(()) +} + +#[cfg(test)] +mod tests { + use crate::{ + inlay_hints::tests::{check, check_with_config, TEST_CONFIG}, + InlayHintsConfig, LifetimeElisionHints, + }; + + #[test] + fn hints_lifetimes() { + check( + r#" +fn empty() {} + +fn no_gpl(a: &()) {} + //^^^^^^<'0> + // ^'0 +fn empty_gpl<>(a: &()) {} + // ^'0 ^'0 +fn partial<'b>(a: &(), b: &'b ()) {} +// ^'0, $ ^'0 +fn partial<'a>(a: &'a (), b: &()) {} +// ^'0, $ ^'0 + +fn single_ret(a: &()) -> &() {} +// ^^^^^^^^^^<'0> + // ^'0 ^'0 +fn full_mul(a: &(), b: &()) {} +// ^^^^^^^^<'0, '1> + // ^'0 ^'1 + +fn foo<'c>(a: &'c ()) -> &() {} + // ^'c + +fn nested_in(a: & &X< &()>) {} +// ^^^^^^^^^<'0, '1, '2> + //^'0 ^'1 ^'2 +fn nested_out(a: &()) -> & &X< &()>{} +// ^^^^^^^^^^<'0> + //^'0 ^'0 ^'0 ^'0 + +impl () { + fn foo(&self) {} + // ^^^<'0> + // ^'0 + fn foo(&self) -> &() {} + // ^^^<'0> + // ^'0 ^'0 + fn foo(&self, a: &()) -> &() {} + // ^^^<'0, '1> + // ^'0 ^'1 ^'0 +} +"#, + ); + } + + #[test] + fn hints_lifetimes_named() { + check_with_config( + InlayHintsConfig { param_names_for_lifetime_elision_hints: true, ..TEST_CONFIG }, + r#" +fn nested_in<'named>(named: & &X< &()>) {} +// ^'named1, 'named2, 'named3, $ + //^'named1 ^'named2 ^'named3 +"#, + ); + } + + #[test] + fn hints_lifetimes_trivial_skip() { + check_with_config( + InlayHintsConfig { + lifetime_elision_hints: LifetimeElisionHints::SkipTrivial, + ..TEST_CONFIG + }, + r#" +fn no_gpl(a: &()) {} +fn empty_gpl<>(a: &()) {} +fn partial<'b>(a: &(), b: &'b ()) {} +fn partial<'a>(a: &'a (), b: &()) {} + +fn single_ret(a: &()) -> &() {} +// ^^^^^^^^^^<'0> + // ^'0 ^'0 +fn full_mul(a: &(), b: &()) {} + +fn foo<'c>(a: &'c ()) -> &() {} + // ^'c + +fn nested_in(a: & &X< &()>) {} +fn nested_out(a: &()) -> & &X< &()>{} +// ^^^^^^^^^^<'0> + //^'0 ^'0 ^'0 ^'0 + +impl () { + fn foo(&self) {} + fn foo(&self) -> &() {} + // ^^^<'0> + // ^'0 ^'0 + fn foo(&self, a: &()) -> &() {} + // ^^^<'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(&()) -> &()) {} +"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/implicit_static.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/implicit_static.rs new file mode 100644 index 000000000000..588a0e3b6a4b --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/implicit_static.rs @@ -0,0 +1,75 @@ +//! Implementation of "implicit static" inlay hints: +//! ```no_run +//! static S: &/* 'static */str = ""; +//! ``` +use either::Either; +use syntax::{ + ast::{self, AstNode}, + SyntaxKind, +}; + +use crate::{InlayHint, InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints}; + +pub(super) fn hints( + acc: &mut Vec, + config: &InlayHintsConfig, + statik_or_const: Either, +) -> Option<()> { + if config.lifetime_elision_hints != LifetimeElisionHints::Always { + return None; + } + + if let Either::Right(it) = &statik_or_const { + if ast::AssocItemList::can_cast( + it.syntax().parent().map_or(SyntaxKind::EOF, |it| it.kind()), + ) { + return None; + } + } + + if let Some(ast::Type::RefType(ty)) = statik_or_const.either(|it| it.ty(), |it| it.ty()) { + if ty.lifetime().is_none() { + let t = ty.amp_token()?; + acc.push(InlayHint { + range: t.text_range(), + kind: InlayKind::LifetimeHint, + label: "'static".to_owned().into(), + tooltip: Some(InlayTooltip::String("Elided static lifetime".into())), + }); + } + } + + Some(()) +} + +#[cfg(test)] +mod tests { + use crate::{ + inlay_hints::tests::{check_with_config, TEST_CONFIG}, + InlayHintsConfig, LifetimeElisionHints, + }; + + #[test] + fn hints_lifetimes_static() { + check_with_config( + InlayHintsConfig { + lifetime_elision_hints: LifetimeElisionHints::Always, + ..TEST_CONFIG + }, + r#" +trait Trait {} +static S: &str = ""; +// ^'static +const C: &str = ""; +// ^'static +const C: &dyn Trait = panic!(); +// ^'static + +impl () { + const C: &str = ""; + const C: &dyn Trait = panic!(); +} +"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/param_name.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/param_name.rs new file mode 100644 index 000000000000..ecee67632e35 --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/param_name.rs @@ -0,0 +1,546 @@ +//! Implementation of "param name" inlay hints: +//! ```no_run +//! fn max(x: i32, y: i32) -> i32 { x + y } +//! _ = max(/*x*/4, /*y*/4); +//! ``` +use either::Either; +use hir::{Callable, Semantics}; +use ide_db::{base_db::FileRange, RootDatabase}; + +use stdx::to_lower_snake_case; +use syntax::ast::{self, AstNode, HasArgList, HasName, UnaryOp}; + +use crate::{InlayHint, InlayHintsConfig, InlayKind, InlayTooltip}; + +pub(super) fn hints( + acc: &mut Vec, + sema: &Semantics<'_, RootDatabase>, + config: &InlayHintsConfig, + expr: ast::Expr, +) -> Option<()> { + if !config.parameter_hints { + return None; + } + + let (callable, arg_list) = get_callable(sema, &expr)?; + let hints = callable + .params(sema.db) + .into_iter() + .zip(arg_list.args()) + .filter_map(|((param, _ty), arg)| { + // Only annotate hints for expressions that exist in the original file + let range = sema.original_range_opt(arg.syntax())?; + let (param_name, name_syntax) = match param.as_ref()? { + Either::Left(pat) => ("self".to_string(), pat.name()), + Either::Right(pat) => match pat { + ast::Pat::IdentPat(it) => (it.name()?.to_string(), it.name()), + _ => return None, + }, + }; + Some((name_syntax, param_name, arg, range)) + }) + .filter(|(_, param_name, arg, _)| { + !should_hide_param_name_hint(sema, &callable, param_name, arg) + }) + .map(|(param, param_name, _, FileRange { range, .. })| { + let mut tooltip = None; + if let Some(name) = param { + if let hir::CallableKind::Function(f) = callable.kind() { + // assert the file is cached so we can map out of macros + if let Some(_) = sema.source(f) { + tooltip = sema.original_range_opt(name.syntax()); + } + } + } + + InlayHint { + range, + kind: InlayKind::ParameterHint, + label: param_name.into(), + tooltip: tooltip.map(|it| InlayTooltip::HoverOffset(it.file_id, it.range.start())), + } + }); + + acc.extend(hints); + Some(()) +} + +fn get_callable( + sema: &Semantics<'_, RootDatabase>, + expr: &ast::Expr, +) -> Option<(hir::Callable, ast::ArgList)> { + match expr { + ast::Expr::CallExpr(expr) => { + let descended = sema.descend_node_into_attributes(expr.clone()).pop(); + let expr = descended.as_ref().unwrap_or(expr); + sema.type_of_expr(&expr.expr()?)?.original.as_callable(sema.db).zip(expr.arg_list()) + } + ast::Expr::MethodCallExpr(expr) => { + let descended = sema.descend_node_into_attributes(expr.clone()).pop(); + let expr = descended.as_ref().unwrap_or(expr); + sema.resolve_method_call_as_callable(expr).zip(expr.arg_list()) + } + _ => None, + } +} + +fn should_hide_param_name_hint( + sema: &Semantics<'_, RootDatabase>, + callable: &hir::Callable, + param_name: &str, + argument: &ast::Expr, +) -> bool { + // These are to be tested in the `parameter_hint_heuristics` test + // hide when: + // - the parameter name is a suffix of the function's name + // - the argument is a qualified constructing or call expression where the qualifier is an ADT + // - exact argument<->parameter match(ignoring leading underscore) or parameter is a prefix/suffix + // of argument with _ splitting it off + // - param starts with `ra_fixture` + // - param is a well known name in a unary function + + let param_name = param_name.trim_start_matches('_'); + if param_name.is_empty() { + return true; + } + + if matches!(argument, ast::Expr::PrefixExpr(prefix) if prefix.op_kind() == Some(UnaryOp::Not)) { + return false; + } + + let fn_name = match callable.kind() { + hir::CallableKind::Function(it) => Some(it.name(sema.db).to_smol_str()), + _ => None, + }; + let fn_name = fn_name.as_deref(); + is_param_name_suffix_of_fn_name(param_name, callable, fn_name) + || is_argument_similar_to_param_name(argument, param_name) + || param_name.starts_with("ra_fixture") + || (callable.n_params() == 1 && is_obvious_param(param_name)) + || is_adt_constructor_similar_to_param_name(sema, argument, param_name) +} + +/// Hide the parameter name of a unary function if it is a `_` - prefixed suffix of the function's name, or equal. +/// +/// `fn strip_suffix(suffix)` will be hidden. +/// `fn stripsuffix(suffix)` will not be hidden. +fn is_param_name_suffix_of_fn_name( + param_name: &str, + callable: &Callable, + fn_name: Option<&str>, +) -> bool { + match (callable.n_params(), fn_name) { + (1, Some(function)) => { + function == param_name + || function + .len() + .checked_sub(param_name.len()) + .and_then(|at| function.is_char_boundary(at).then(|| function.split_at(at))) + .map_or(false, |(prefix, suffix)| { + suffix.eq_ignore_ascii_case(param_name) && prefix.ends_with('_') + }) + } + _ => false, + } +} + +fn is_argument_similar_to_param_name(argument: &ast::Expr, param_name: &str) -> bool { + // check whether param_name and argument are the same or + // whether param_name is a prefix/suffix of argument(split at `_`) + let argument = match get_string_representation(argument) { + Some(argument) => argument, + None => return false, + }; + + // std is honestly too panic happy... + let str_split_at = |str: &str, at| str.is_char_boundary(at).then(|| argument.split_at(at)); + + let param_name = param_name.trim_start_matches('_'); + let argument = argument.trim_start_matches('_'); + + match str_split_at(argument, param_name.len()) { + Some((prefix, rest)) if prefix.eq_ignore_ascii_case(param_name) => { + return rest.is_empty() || rest.starts_with('_'); + } + _ => (), + } + match argument.len().checked_sub(param_name.len()).and_then(|at| str_split_at(argument, at)) { + Some((rest, suffix)) if param_name.eq_ignore_ascii_case(suffix) => { + return rest.is_empty() || rest.ends_with('_'); + } + _ => (), + } + false +} + +fn get_string_representation(expr: &ast::Expr) -> Option { + match expr { + ast::Expr::MethodCallExpr(method_call_expr) => { + let name_ref = method_call_expr.name_ref()?; + match name_ref.text().as_str() { + "clone" | "as_ref" => method_call_expr.receiver().map(|rec| rec.to_string()), + name_ref => Some(name_ref.to_owned()), + } + } + ast::Expr::MacroExpr(macro_expr) => { + Some(macro_expr.macro_call()?.path()?.segment()?.to_string()) + } + ast::Expr::FieldExpr(field_expr) => Some(field_expr.name_ref()?.to_string()), + ast::Expr::PathExpr(path_expr) => Some(path_expr.path()?.segment()?.to_string()), + ast::Expr::PrefixExpr(prefix_expr) => get_string_representation(&prefix_expr.expr()?), + ast::Expr::RefExpr(ref_expr) => get_string_representation(&ref_expr.expr()?), + ast::Expr::CastExpr(cast_expr) => get_string_representation(&cast_expr.expr()?), + _ => None, + } +} + +fn is_obvious_param(param_name: &str) -> bool { + // avoid displaying hints for common functions like map, filter, etc. + // or other obvious words used in std + let is_obvious_param_name = + matches!(param_name, "predicate" | "value" | "pat" | "rhs" | "other"); + param_name.len() == 1 || is_obvious_param_name +} + +fn is_adt_constructor_similar_to_param_name( + sema: &Semantics<'_, RootDatabase>, + argument: &ast::Expr, + param_name: &str, +) -> bool { + let path = match argument { + ast::Expr::CallExpr(c) => c.expr().and_then(|e| match e { + ast::Expr::PathExpr(p) => p.path(), + _ => None, + }), + ast::Expr::PathExpr(p) => p.path(), + ast::Expr::RecordExpr(r) => r.path(), + _ => return false, + }; + let path = match path { + Some(it) => it, + None => return false, + }; + (|| match sema.resolve_path(&path)? { + hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => { + Some(to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name) + } + hir::PathResolution::Def(hir::ModuleDef::Function(_) | hir::ModuleDef::Variant(_)) => { + if to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name { + return Some(true); + } + let qual = path.qualifier()?; + match sema.resolve_path(&qual)? { + hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => { + Some(to_lower_snake_case(&qual.segment()?.name_ref()?.text()) == param_name) + } + _ => None, + } + } + _ => None, + })() + .unwrap_or(false) +} + +#[cfg(test)] +mod tests { + use crate::{ + inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, + InlayHintsConfig, + }; + + #[track_caller] + fn check_params(ra_fixture: &str) { + check_with_config( + InlayHintsConfig { parameter_hints: true, ..DISABLED_CONFIG }, + ra_fixture, + ); + } + + #[test] + fn param_hints_only() { + check_params( + r#" +fn foo(a: i32, b: i32) -> i32 { a + b } +fn main() { + let _x = foo( + 4, + //^ a + 4, + //^ b + ); +}"#, + ); + } + + #[test] + fn param_hints_on_closure() { + check_params( + r#" +fn main() { + let clo = |a: u8, b: u8| a + b; + clo( + 1, + //^ a + 2, + //^ b + ); +} + "#, + ); + } + + #[test] + fn param_name_similar_to_fn_name_still_hints() { + check_params( + r#" +fn max(x: i32, y: i32) -> i32 { x + y } +fn main() { + let _x = max( + 4, + //^ x + 4, + //^ y + ); +}"#, + ); + } + + #[test] + fn param_name_similar_to_fn_name() { + check_params( + r#" +fn param_with_underscore(with_underscore: i32) -> i32 { with_underscore } +fn main() { + let _x = param_with_underscore( + 4, + ); +}"#, + ); + check_params( + r#" +fn param_with_underscore(underscore: i32) -> i32 { underscore } +fn main() { + let _x = param_with_underscore( + 4, + ); +}"#, + ); + } + + #[test] + fn param_name_same_as_fn_name() { + check_params( + r#" +fn foo(foo: i32) -> i32 { foo } +fn main() { + let _x = foo( + 4, + ); +}"#, + ); + } + + #[test] + fn never_hide_param_when_multiple_params() { + check_params( + r#" +fn foo(foo: i32, bar: i32) -> i32 { bar + baz } +fn main() { + let _x = foo( + 4, + //^ foo + 8, + //^ bar + ); +}"#, + ); + } + + #[test] + fn param_hints_look_through_as_ref_and_clone() { + check_params( + r#" +fn foo(bar: i32, baz: f32) {} + +fn main() { + let bar = 3; + let baz = &"baz"; + let fez = 1.0; + foo(bar.clone(), bar.clone()); + //^^^^^^^^^^^ baz + foo(bar.as_ref(), bar.as_ref()); + //^^^^^^^^^^^^ baz +} +"#, + ); + } + + #[test] + fn self_param_hints() { + check_params( + r#" +struct Foo; + +impl Foo { + fn foo(self: Self) {} + fn bar(self: &Self) {} +} + +fn main() { + Foo::foo(Foo); + //^^^ self + Foo::bar(&Foo); + //^^^^ self +} +"#, + ) + } + + #[test] + fn param_name_hints_show_for_literals() { + check_params( + r#"pub fn test(a: i32, b: i32) -> [i32; 2] { [a, b] } +fn main() { + test( + 0xa_b, + //^^^^^ a + 0xa_b, + //^^^^^ b + ); +}"#, + ) + } + + #[test] + fn function_call_parameter_hint() { + check_params( + r#" +//- minicore: option +struct FileId {} +struct SmolStr {} + +struct TextRange {} +struct SyntaxKind {} +struct NavigationTarget {} + +struct Test {} + +impl Test { + fn method(&self, mut param: i32) -> i32 { param * 2 } + + fn from_syntax( + file_id: FileId, + name: SmolStr, + focus_range: Option, + full_range: TextRange, + kind: SyntaxKind, + docs: Option, + ) -> NavigationTarget { + NavigationTarget {} + } +} + +fn test_func(mut foo: i32, bar: i32, msg: &str, _: i32, last: i32) -> i32 { + foo + bar +} + +fn main() { + let not_literal = 1; + let _: i32 = test_func(1, 2, "hello", 3, not_literal); + //^ foo ^ bar ^^^^^^^ msg ^^^^^^^^^^^ last + let t: Test = Test {}; + t.method(123); + //^^^ param + Test::method(&t, 3456); + //^^ self ^^^^ param + Test::from_syntax( + FileId {}, + "impl".into(), + //^^^^^^^^^^^^^ name + None, + //^^^^ focus_range + TextRange {}, + //^^^^^^^^^^^^ full_range + SyntaxKind {}, + //^^^^^^^^^^^^^ kind + None, + //^^^^ docs + ); +}"#, + ); + } + + #[test] + fn parameter_hint_heuristics() { + check_params( + r#" +fn check(ra_fixture_thing: &str) {} + +fn map(f: i32) {} +fn filter(predicate: i32) {} + +fn strip_suffix(suffix: &str) {} +fn stripsuffix(suffix: &str) {} +fn same(same: u32) {} +fn same2(_same2: u32) {} + +fn enum_matches_param_name(completion_kind: CompletionKind) {} + +fn foo(param: u32) {} +fn bar(param_eter: u32) {} + +enum CompletionKind { + Keyword, +} + +fn non_ident_pat((a, b): (u32, u32)) {} + +fn main() { + const PARAM: u32 = 0; + foo(PARAM); + foo(!PARAM); + // ^^^^^^ param + check(""); + + map(0); + filter(0); + + strip_suffix(""); + stripsuffix(""); + //^^ suffix + same(0); + same2(0); + + enum_matches_param_name(CompletionKind::Keyword); + + let param = 0; + foo(param); + foo(param as _); + let param_end = 0; + foo(param_end); + let start_param = 0; + foo(start_param); + let param2 = 0; + foo(param2); + //^^^^^^ param + + macro_rules! param { + () => {}; + }; + foo(param!()); + + let param_eter = 0; + bar(param_eter); + let param_eter_end = 0; + bar(param_eter_end); + let start_param_eter = 0; + bar(start_param_eter); + let param_eter2 = 0; + bar(param_eter2); + //^^^^^^^^^^^ param_eter + + non_ident_pat((0, 0)); +}"#, + ); + } +} diff --git a/src/tools/rust-analyzer/crates/ide/src/lib.rs b/src/tools/rust-analyzer/crates/ide/src/lib.rs index 7402e86f36fa..239456cb2816 100644 --- a/src/tools/rust-analyzer/crates/ide/src/lib.rs +++ b/src/tools/rust-analyzer/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, AdjustmentHintsMode, ClosureReturnTypeHints, DiscriminantHints, InlayHint, + InlayHintLabel, InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints, }, join_lines::JoinLinesConfig, markup::Markup, @@ -236,6 +236,7 @@ impl Analysis { Ok(Vec::new()), false, CrateOrigin::CratesIo { repo: None, name: None }, + None, ); change.change_file(file_id, Some(Arc::new(text))); change.set_crate_graph(crate_graph); diff --git a/src/tools/rust-analyzer/crates/ide/src/markup.rs b/src/tools/rust-analyzer/crates/ide/src/markup.rs index 60c193c40aba..de9fef61a78e 100644 --- a/src/tools/rust-analyzer/crates/ide/src/markup.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/moniker.rs b/src/tools/rust-analyzer/crates/ide/src/moniker.rs index fcbf6d8e58c4..af5e96d2381a 100644 --- a/src/tools/rust-analyzer/crates/ide/src/moniker.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/navigation_target.rs b/src/tools/rust-analyzer/crates/ide/src/navigation_target.rs index 9f049e298ad1..3aa799d43a8a 100644 --- a/src/tools/rust-analyzer/crates/ide/src/navigation_target.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/rename.rs b/src/tools/rust-analyzer/crates/ide/src/rename.rs index b4df0437050f..15bdf14fb9b6 100644 --- a/src/tools/rust-analyzer/crates/ide/src/rename.rs +++ b/src/tools/rust-analyzer/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(); @@ -364,14 +364,11 @@ 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 '{}' failed unexpectedly: {}", new_name, err) + panic!("Rename to '{new_name}' failed unexpectedly: {err}") } } }; @@ -397,11 +394,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/src/tools/rust-analyzer/crates/ide/src/runnables.rs b/src/tools/rust-analyzer/crates/ide/src/runnables.rs index 0181c6b8e456..5b35262aabe1 100644 --- a/src/tools/rust-analyzer/crates/ide/src/runnables.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/shuffle_crate_graph.rs b/src/tools/rust-analyzer/crates/ide/src/shuffle_crate_graph.rs index 2d86627643d7..ae539a5d397f 100644 --- a/src/tools/rust-analyzer/crates/ide/src/shuffle_crate_graph.rs +++ b/src/tools/rust-analyzer/crates/ide/src/shuffle_crate_graph.rs @@ -36,6 +36,7 @@ pub(crate) fn shuffle_crate_graph(db: &mut RootDatabase) { data.proc_macro.clone(), data.is_proc_macro, data.origin.clone(), + data.target_layout.clone(), ); map.insert(old_id, new_id); } diff --git a/src/tools/rust-analyzer/crates/ide/src/signature_help.rs b/src/tools/rust-analyzer/crates/ide/src/signature_help.rs index e7412d27faf4..f807ba30f40a 100644 --- a/src/tools/rust-analyzer/crates/ide/src/signature_help.rs +++ b/src/tools/rust-analyzer/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()))?; @@ -644,7 +646,7 @@ pub fn add_one(x: i32) -> i32 { x + 1 } -pub fn do() { +pub fn r#do() { add_one($0 }"#, expect![[r##" @@ -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] diff --git a/src/tools/rust-analyzer/crates/ide/src/static_index.rs b/src/tools/rust-analyzer/crates/ide/src/static_index.rs index 2380cf7381c1..a6b30ba13962 100644 --- a/src/tools/rust-analyzer/crates/ide/src/static_index.rs +++ b/src/tools/rust-analyzer/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, @@ -106,13 +107,17 @@ impl StaticIndex<'_> { .analysis .inlay_hints( &InlayHintsConfig { + location_links: true, render_colons: true, + discriminant_hints: crate::DiscriminantHints::Fieldless, type_hints: true, parameter_hints: true, chaining_hints: true, closure_return_type_hints: crate::ClosureReturnTypeHints::WithBlock, lifetime_elision_hints: crate::LifetimeElisionHints::Never, adjustment_hints: crate::AdjustmentHints::Never, + adjustment_hints_mode: AdjustmentHintsMode::Prefix, + adjustment_hints_hide_outside_unsafe: false, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, param_names_for_lifetime_elision_hints: false, @@ -231,13 +236,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:?}"); } } @@ -252,13 +257,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/src/tools/rust-analyzer/crates/ide/src/status.rs b/src/tools/rust-analyzer/crates/ide/src/status.rs index 20810c25b3e8..7ce782f93be1 100644 --- a/src/tools/rust-analyzer/crates/ide/src/status.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/highlight.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/highlight.rs index e7d0a8be7f57..892e6a9bb0ab 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/highlight.rs +++ b/src/tools/rust-analyzer/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 @@ -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/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs index e91fd7f12571..2c7823069b3f 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/tests.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/tests.rs index 46cc667fc454..2f870d769c0f 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/tests.rs +++ b/src/tools/rust-analyzer/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. diff --git a/src/tools/rust-analyzer/crates/ide/src/syntax_tree.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_tree.rs index 4256fea0f81e..bb6827e8a44e 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_tree.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/typing.rs b/src/tools/rust-analyzer/crates/ide/src/typing.rs index 9118f3c699c0..eba5a485636e 100644 --- a/src/tools/rust-analyzer/crates/ide/src/typing.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide/src/typing/on_enter.rs b/src/tools/rust-analyzer/crates/ide/src/typing/on_enter.rs index 48c1713270b6..298482f2ab5c 100644 --- a/src/tools/rust-analyzer/crates/ide/src/typing/on_enter.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/limit/src/lib.rs b/src/tools/rust-analyzer/crates/limit/src/lib.rs index d6a706a7cd73..6b2534aa4619 100644 --- a/src/tools/rust-analyzer/crates/limit/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/mbe/src/benchmark.rs b/src/tools/rust-analyzer/crates/mbe/src/benchmark.rs index 9c92bae6a196..4b7500250187 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/benchmark.rs +++ b/src/tools/rust-analyzer/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,9 +139,15 @@ 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::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/src/tools/rust-analyzer/crates/mbe/src/expander/matcher.rs b/src/tools/rust-analyzer/crates/mbe/src/expander/matcher.rs index 3f656df25f7d..88eae136f732 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/expander/matcher.rs +++ b/src/tools/rust-analyzer/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 { @@ -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, @@ -500,18 +503,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); } @@ -541,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, @@ -616,21 +670,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 +729,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, @@ -698,12 +743,16 @@ fn match_meta_var(kind: MetaVarKind, input: &mut TtIter<'_>) -> ExpandResult parser::PrefixEntryPoint::Item, MetaVarKind::Vis => parser::PrefixEntryPoint::Vis, MetaVarKind::Expr => { - // `expr` should not match underscores. + // `expr` should not match underscores, let expressions, or inline const. The latter + // two are for [backwards compatibility][0]. // HACK: Macro expansion should not be done using "rollback and try another alternative". - // rustc [explicitly checks the next token][0]. - // [0]: https://github.com/rust-lang/rust/blob/f0c4da499/compiler/rustc_expand/src/mbe/macro_parser.rs#L576 + // rustc [explicitly checks the next token][1]. + // [0]: https://github.com/rust-lang/rust/issues/86730 + // [1]: https://github.com/rust-lang/rust/blob/f0c4da499/compiler/rustc_expand/src/mbe/macro_parser.rs#L576 match input.peek_n(0) { - Some(tt::TokenTree::Leaf(tt::Leaf::Ident(it))) if it.text == "_" => { + Some(tt::TokenTree::Leaf(tt::Leaf::Ident(it))) + if it.text == "_" || it.text == "let" || it.text == "const" => + { return ExpandResult::only_err(ExpandError::NoMatchingRule) } _ => {} @@ -752,10 +801,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(_) => { + } } } } @@ -818,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, @@ -833,11 +882,14 @@ impl<'a> TtIter<'a> { }, Err(_) => false, }, - Separator::Puncts(lhss) if idx < lhss.len() => match fork.expect_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; @@ -846,52 +898,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/src/tools/rust-analyzer/crates/mbe/src/expander/transcriber.rs b/src/tools/rust-analyzer/crates/mbe/src/expander/transcriber.rs index cbb59ab8e67b..db0d327bf409 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/expander/transcriber.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/mbe/src/lib.rs b/src/tools/rust-analyzer/crates/mbe/src/lib.rs index c4f0fa20d6de..2373db97a3e4 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/mbe/src/parser.rs b/src/tools/rust-analyzer/crates/mbe/src/parser.rs index 351c359b73c8..fad905e97f45 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/parser.rs +++ b/src/tools/rust-analyzer/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)] @@ -108,28 +110,23 @@ 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, 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( + first_peeked: &tt::TokenTree, + src: &mut TtIter<'_>, + 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 +157,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 +177,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 +185,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 } } @@ -259,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/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge.rs b/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge.rs index cf53c16726bf..5c965055634e 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge.rs +++ b/src/tools/rust-analyzer/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 @@ -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/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge/tests.rs b/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge/tests.rs index 4e04d2bc1c77..c1a608365582 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/syntax_bridge/tests.rs +++ b/src/tools/rust-analyzer/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) }) @@ -30,7 +30,7 @@ fn check_punct_spacing(fixture: &str) { 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) { + if let Some(expected) = annotations.remove(id) { assert_eq!(expected, *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/src/tools/rust-analyzer/crates/mbe/src/to_parser_input.rs b/src/tools/rust-analyzer/crates/mbe/src/to_parser_input.rs index 783c3ca4a89f..7013aa58b55d 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/to_parser_input.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/mbe/src/tt_iter.rs b/src/tools/rust-analyzer/crates/mbe/src/tt_iter.rs index 7aceb676c749..bee7b5de6ac3 100644 --- a/src/tools/rust-analyzer/crates/mbe/src/tt_iter.rs +++ b/src/tools/rust-analyzer/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,56 @@ 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(()), } } + /// 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(()); + }; + + 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 _ = self.next().unwrap(); + let _ = self.next().unwrap(); + Ok(smallvec![first, second.clone(), third.unwrap().clone()]) + } + ('-' | '!' | '*' | '/' | '&' | '%' | '^' | '+' | '<' | '=' | '>' | '|', '=', _) + | ('-' | '=' | '>', '>', _) + | ('<', '-', _) + | (':', ':', _) + | ('.', '.', _) + | ('&', '&', _) + | ('<', '<', _) + | ('|', '|', _) => { + let _ = self.next().unwrap(); + Ok(smallvec![first, second.clone()]) + } + _ => Ok(smallvec![first]), + } + } + pub(crate) fn expect_fragment( &mut self, entry_point: parser::PrefixEntryPoint, @@ -141,7 +185,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) } } diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar.rs b/src/tools/rust-analyzer/crates/parser/src/grammar.rs index b7468329610a..485b612f0818 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs index dcaceade652a..8932330b825d 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs +++ b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs @@ -288,7 +288,7 @@ fn expr_bp( } const LHS_FIRST: TokenSet = - atom::ATOM_EXPR_FIRST.union(TokenSet::new(&[T![&], T![*], T![!], T![.], T![-]])); + atom::ATOM_EXPR_FIRST.union(TokenSet::new(&[T![&], T![*], T![!], T![.], T![-], T![_]])); fn lhs(p: &mut Parser<'_>, r: Restrictions) -> Option<(CompletedMarker, BlockLike)> { let m; diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs index 99f42a266234..efa3997353bf 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs +++ b/src/tools/rust-analyzer/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), @@ -278,6 +280,8 @@ fn closure_expr(p: &mut Parser<'_>) -> CompletedMarker { // fn main() { || -> i32 { 92 }(); } block_expr(p); } else if p.at_ts(EXPR_FIRST) { + // test closure_body_underscore_assignment + // fn main() { || _ = 0; } expr(p); } else { p.error("expected expression"); @@ -531,6 +535,7 @@ fn return_expr(p: &mut Parser<'_>) -> CompletedMarker { } m.complete(p, RETURN_EXPR) } + // test yield_expr // fn foo() { // yield; @@ -546,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/src/tools/rust-analyzer/crates/parser/src/grammar/paths.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/paths.rs index 5dc9c6c82a14..af3b6f63cf51 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/paths.rs +++ b/src/tools/rust-analyzer/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); diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar/patterns.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/patterns.rs index bc1224af9b21..abcefffa23f0 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/patterns.rs +++ b/src/tools/rust-analyzer/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); @@ -115,11 +126,21 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { // ^ // `[0..]` // ^ - if matches!(p.current(), T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']']) { + // `0 .. if` + // ^ + if matches!( + p.current(), + T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']'] | T![if] + ) { // test half_open_range_pat // fn f() { // let 0 .. = 1u32; // let 0..: _ = 1u32; + // + // match 42 { + // 0 .. if true => (), + // _ => (), + // } // } } else { atom_pat(p, recovery_set); diff --git a/src/tools/rust-analyzer/crates/parser/src/lexed_str.rs b/src/tools/rust-analyzer/crates/parser/src/lexed_str.rs index f4b9988eacb0..b48921f19177 100644 --- a/src/tools/rust-analyzer/crates/parser/src/lexed_str.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/src/output.rs b/src/tools/rust-analyzer/crates/parser/src/output.rs index e9ec9822d68c..6ca841cfe073 100644 --- a/src/tools/rust-analyzer/crates/parser/src/output.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/src/parser.rs b/src/tools/rust-analyzer/crates/parser/src/parser.rs index 48d8350e07ee..48aecb35be12 100644 --- a/src/tools/rust-analyzer/crates/parser/src/parser.rs +++ b/src/tools/rust-analyzer/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. @@ -162,7 +167,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)); } @@ -205,7 +210,7 @@ impl<'t> Parser<'t> { if self.eat(kind) { return true; } - self.error(format!("expected {:?}", kind)); + self.error(format!("expected {kind:?}")); false } @@ -237,6 +242,7 @@ impl<'t> Parser<'t> { fn do_bump(&mut self, kind: SyntaxKind, n_raw_tokens: u8) { self.pos += n_raw_tokens as usize; + self.steps.set(0); self.push_event(Event::Token { kind, n_raw_tokens }); } diff --git a/src/tools/rust-analyzer/crates/parser/src/shortcuts.rs b/src/tools/rust-analyzer/crates/parser/src/shortcuts.rs index 4b805faddcba..2be4050d1357 100644 --- a/src/tools/rust-analyzer/crates/parser/src/shortcuts.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/src/syntax_kind/generated.rs b/src/tools/rust-analyzer/crates/parser/src/syntax_kind/generated.rs index c84f45f1f8e4..52b3fc23d59c 100644 --- a/src/tools/rust-analyzer/crates/parser/src/syntax_kind/generated.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/src/tests.rs b/src/tools/rust-analyzer/crates/parser/src/tests.rs index 735c0b3e4020..c1b4e9a7d8ae 100644 --- a/src/tools/rust-analyzer/crates/parser/src/tests.rs +++ b/src/tools/rust-analyzer/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,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, "{:?} {:?}\n", kind, text).unwrap(); + writeln!(buf, "{indent}{kind:?} {text:?}").unwrap(); } crate::StrStep::Enter { kind } => { assert!(depth > 0 || len == 0); depth += 1; - write!(buf, "{}", indent).unwrap(); - write!(buf, "{:?}\n", kind).unwrap(); + writeln!(buf, "{indent}{kind:?}").unwrap(); indent.push_str(" "); } crate::StrStep::Exit => { @@ -111,7 +109,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 +122,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 +147,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/src/tools/rust-analyzer/crates/parser/src/tests/sourcegen_inline_tests.rs b/src/tools/rust-analyzer/crates/parser/src/tests/sourcegen_inline_tests.rs index 7b2b703deb69..54e85c07344b 100644 --- a/src/tools/rust-analyzer/crates/parser/src/tests/sourcegen_inline_tests.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast index cfef5d3f9538..d9981c50719f 100644 --- a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs index 2411d51096b3..b54354211d2d 100644 --- a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs +++ b/src/tools/rust-analyzer/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, _) => (), } } diff --git a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast index 4b401b60df0c..c85a68599110 100644 --- a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs index c9386a221a95..f7e2d07922ec 100644 --- a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs +++ b/src/tools/rust-analyzer/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 => (), + _ => (), + } } diff --git a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rast b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rast new file mode 100644 index 000000000000..8970922c9779 --- /dev/null +++ b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rast @@ -0,0 +1,32 @@ +SOURCE_FILE + FN + FN_KW "fn" + WHITESPACE " " + NAME + IDENT "main" + PARAM_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + BLOCK_EXPR + STMT_LIST + L_CURLY "{" + WHITESPACE " " + EXPR_STMT + CLOSURE_EXPR + PARAM_LIST + PIPE "|" + PIPE "|" + WHITESPACE " " + BIN_EXPR + UNDERSCORE_EXPR + UNDERSCORE "_" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "0" + SEMICOLON ";" + WHITESPACE " " + R_CURLY "}" + WHITESPACE "\n" diff --git a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rs b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rs new file mode 100644 index 000000000000..9a34b63d29c8 --- /dev/null +++ b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0203_closure_body_underscore_assignment.rs @@ -0,0 +1 @@ +fn main() { || _ = 0; } diff --git a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast new file mode 100644 index 000000000000..24931bfcd7cd --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs new file mode 100644 index 000000000000..624f86c9dc0d --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs index a3ea05f4aff8..7921fda331ee 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-api/src/msg/flat.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/msg/flat.rs index 268a03bb5359..b178c46263e0 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/msg/flat.rs +++ b/src/tools/rust-analyzer/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 } } @@ -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) => { @@ -312,7 +312,7 @@ impl Reader { }) .into() } - other => panic!("bad tag: {}", other), + other => panic!("bad tag: {other}"), } }) .collect(), diff --git a/src/tools/rust-analyzer/crates/proc-macro-api/src/process.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/process.rs index c4018d3b39e7..54dcb17f4e8b 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/process.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-api/src/version.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/version.rs index 030531b80d7b..40125c2a512a 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/version.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs index ed0e91da3617..e78842f5c37e 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs index a405497f3c9b..c5145d00e329 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs index b1e982f4779f..22d4ad94f770 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs @@ -471,8 +471,12 @@ impl server::Punct for RustAnalyzer { } 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 new(&mut self, string: &str, span: Self::Span, is_raw: bool) -> Self::Ident { + IdentId(self.ident_interner.intern(&IdentData(tt::Ident::new_with_is_raw( + string.into(), + span, + is_raw, + )))) } fn span(&mut self, ident: Self::Ident) -> Self::Span { @@ -544,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() } } @@ -559,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 { @@ -574,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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs index 102027d14a98..b346c2c18969 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs index ed49cc759660..f82f20c37bc3 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs @@ -486,8 +486,12 @@ impl server::Punct for RustAnalyzer { } 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 new(&mut self, string: &str, span: Self::Span, is_raw: bool) -> Self::Ident { + IdentId(self.ident_interner.intern(&IdentData(tt::Ident::new_with_is_raw( + string.into(), + span, + is_raw, + )))) } fn span(&mut self, ident: Self::Ident) -> Self::Span { @@ -559,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() } } @@ -574,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 { @@ -589,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/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs index e4e43e97dde8..068f79f824dc 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs @@ -107,8 +107,8 @@ impl server::TokenStream for RustAnalyzer { } bridge::TokenTree::Ident(ident) => { - // FIXME: handle raw idents let text = ident.sym.text(); + let text = if ident.is_raw { tt::SmolStr::from_iter(["r#", &text]) } else { text }; let ident: tt::Ident = tt::Ident { text, id: ident.span }; let leaf = tt::Leaf::from(ident); let tree = TokenTree::from(leaf); @@ -182,9 +182,8 @@ impl server::TokenStream for RustAnalyzer { .map(|tree| match tree { tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => { bridge::TokenTree::Ident(bridge::Ident { - sym: Symbol::intern(&ident.text), - // FIXME: handle raw idents - is_raw: false, + sym: Symbol::intern(ident.text.trim_start_matches("r#")), + is_raw: ident.text.starts_with("r#"), span: ident.id, }) } diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/mod.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/mod.rs index 0ce099ae0bab..5b8aca4d8164 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/abis/mod.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs index b4f5ebd157f3..2eb939a7ce58 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs index cc0fc91fe989..1ccc170f422b 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs @@ -63,7 +63,7 @@ fn test_fn_like_macro_clone_raw_ident() { "r#async", expect![[r#" SUBTREE $ - IDENT async 4294967295"#]], + IDENT r#async 4294967295"#]], ); } @@ -86,15 +86,13 @@ fn test_fn_like_mk_literals() { #[test] fn test_fn_like_mk_idents() { - // FIXME: this test is wrong: raw should be 'r#raw' but ABIs 1.64 and below - // simply ignore `is_raw` when implementing the `Ident` interface. assert_expand( "fn_like_mk_idents", r#""#, expect![[r#" SUBTREE $ IDENT standard 4294967295 - IDENT raw 4294967295"#]], + IDENT r#raw 4294967295"#]], ); } diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/utils.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/utils.rs index 44b1b6588da0..efbeb90ca9dd 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/utils.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/proc-macro-test/build.rs b/src/tools/rust-analyzer/crates/proc-macro-test/build.rs index a80c962617bb..19a5caa4ccda 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-test/build.rs +++ b/src/tools/rust-analyzer/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 @@ -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() { @@ -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/src/tools/rust-analyzer/crates/profile/src/hprof.rs b/src/tools/rust-analyzer/crates/profile/src/hprof.rs index b562c193e713..ea89a89c5c5c 100644 --- a/src/tools/rust-analyzer/crates/profile/src/hprof.rs +++ b/src/tools/rust-analyzer/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)] @@ -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/src/tools/rust-analyzer/crates/profile/src/lib.rs b/src/tools/rust-analyzer/crates/profile/src/lib.rs index 00f7952e8072..7ca3c7d62957 100644 --- a/src/tools/rust-analyzer/crates/profile/src/lib.rs +++ b/src/tools/rust-analyzer/crates/profile/src/lib.rs @@ -114,11 +114,11 @@ 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()); } _ => { - eprintln!("Failed to run:\n\n {:?}\n", cmd); + eprintln!("Failed to run:\n\n {cmd:?}\n"); } } } diff --git a/src/tools/rust-analyzer/crates/profile/src/memory_usage.rs b/src/tools/rust-analyzer/crates/profile/src/memory_usage.rs index ee882b4cb4c6..8017f865792b 100644 --- a/src/tools/rust-analyzer/crates/profile/src/memory_usage.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/profile/src/stop_watch.rs b/src/tools/rust-analyzer/crates/profile/src/stop_watch.rs index 625832848296..71303d5a6316 100644 --- a/src/tools/rust-analyzer/crates/profile/src/stop_watch.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/project-model/src/build_scripts.rs b/src/tools/rust-analyzer/crates/project-model/src/build_scripts.rs index ae2b41f27d58..6550cf27e991 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/build_scripts.rs +++ b/src/tools/rust-analyzer/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) @@ -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 { @@ -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; } @@ -334,7 +333,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/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs index 02ec7a4f6f99..467cf0917875 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs +++ b/src/tools/rust-analyzer/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) } @@ -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) @@ -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/src/tools/rust-analyzer/crates/project-model/src/cfg_flag.rs b/src/tools/rust-analyzer/crates/project-model/src/cfg_flag.rs index f3dd8f51333b..c134b78ab3a2 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/cfg_flag.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/project-model/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/src/lib.rs index 575581fa543a..e2f09bad2ded 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/lib.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/lib.rs @@ -25,6 +25,7 @@ mod sysroot; mod workspace; mod rustc_cfg; mod build_scripts; +mod target_data_layout; #[cfg(test)] mod tests; @@ -145,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/src/tools/rust-analyzer/crates/project-model/src/manifest_path.rs b/src/tools/rust-analyzer/crates/project-model/src/manifest_path.rs index 4910fd3d11cc..980d92d3df9d 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/manifest_path.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/project-model/src/project_json.rs b/src/tools/rust-analyzer/crates/project-model/src/project_json.rs index 5133a14d532b..9af0eafe9fdd 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/project_json.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/project-model/src/rustc_cfg.rs b/src/tools/rust-analyzer/crates/project-model/src/rustc_cfg.rs index 323136183663..0066f6717efe 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/rustc_cfg.rs +++ b/src/tools/rust-analyzer/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(&["-Z", "unstable-options", "rustc", "--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/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs b/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs index f6c09a27c9d7..8d5ab0061e51 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs +++ b/src/tools/rust-analyzer/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()) @@ -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/src/tools/rust-analyzer/crates/project-model/src/target_data_layout.rs b/src/tools/rust-analyzer/crates/project-model/src/target_data_layout.rs new file mode 100644 index 000000000000..40cf47c3f559 --- /dev/null +++ b/src/tools/rust-analyzer/crates/project-model/src/target_data_layout.rs @@ -0,0 +1,40 @@ +//! Runs `rustc --print target-spec-json` to get the target_data_layout. +use std::process::Command; + +use rustc_hash::FxHashMap; + +use crate::{utf8_stdout, ManifestPath}; + +pub(super) fn get( + cargo_toml: Option<&ManifestPath>, + target: Option<&str>, + extra_env: &FxHashMap, +) -> Option { + let output = (|| { + if let Some(cargo_toml) = cargo_toml { + 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"]) + .env("RUSTC_BOOTSTRAP", "1"); + if let Some(target) = target { + cmd.args(["--target", target]); + } + match utf8_stdout(cmd) { + Ok(it) => return Ok(it), + Err(e) => tracing::debug!("{e:?}: falling back to querying rustc for cfgs"), + } + } + // 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"]) + .env("RUSTC_BOOTSTRAP", "1"); + if let Some(target) = target { + cmd.args(["--target", target]); + } + utf8_stdout(cmd) + })() + .ok()?; + Some(output.split_once(r#""data-layout": ""#)?.1.split_once('"')?.0.to_owned()) +} diff --git a/src/tools/rust-analyzer/crates/project-model/src/tests.rs b/src/tools/rust-analyzer/crates/project-model/src/tests.rs index a1cb438bddc4..2bb9ebf998bd 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/tests.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/tests.rs @@ -29,6 +29,7 @@ fn load_cargo_with_overrides(file: &str, cfg_overrides: CfgOverrides) -> CrateGr rustc_cfg: Vec::new(), cfg_overrides, toolchain: None, + target_layout: None, }; to_crate_graph(project_workspace) } @@ -106,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); } @@ -150,6 +151,7 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() { "debug_assertions", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -219,6 +221,7 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() { "debug_assertions", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -297,6 +300,7 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() { "debug_assertions", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -375,6 +379,7 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() { "debug_assertions", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -462,6 +467,7 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() { "feature=use_std", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -547,6 +553,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -618,6 +625,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -698,6 +706,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -778,6 +787,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -865,6 +875,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() { "feature=use_std", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -941,6 +952,7 @@ fn cargo_hello_world_project_model() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -1012,6 +1024,7 @@ fn cargo_hello_world_project_model() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -1092,6 +1105,7 @@ fn cargo_hello_world_project_model() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -1172,6 +1186,7 @@ fn cargo_hello_world_project_model() { "test", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -1259,6 +1274,7 @@ fn cargo_hello_world_project_model() { "feature=use_std", ], ), + target_layout: None, env: Env { entries: { "CARGO_PKG_LICENSE": "", @@ -1327,6 +1343,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1371,6 +1388,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1405,6 +1423,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1439,6 +1458,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1473,6 +1493,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1517,6 +1538,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1551,6 +1573,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1658,6 +1681,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1692,6 +1716,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1726,6 +1751,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, @@ -1760,6 +1786,7 @@ fn rust_project_hello_world_project_model() { potential_cfg_options: CfgOptions( [], ), + target_layout: None, env: Env { entries: {}, }, diff --git a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs index 3d199ed24afe..e2382aa37e8e 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs @@ -21,8 +21,8 @@ use crate::{ cfg_flag::CfgFlag, rustc_cfg, sysroot::SysrootCrate, - utf8_stdout, CargoConfig, CargoWorkspace, InvocationStrategy, ManifestPath, Package, - ProjectJson, ProjectManifest, Sysroot, TargetKind, WorkspaceBuildScripts, + target_data_layout, utf8_stdout, CargoConfig, CargoWorkspace, InvocationStrategy, ManifestPath, + Package, ProjectJson, ProjectManifest, Sysroot, TargetKind, WorkspaceBuildScripts, }; /// A set of cfg-overrides per crate. @@ -79,6 +79,7 @@ pub enum ProjectWorkspace { rustc_cfg: Vec, cfg_overrides: CfgOverrides, toolchain: Option, + target_layout: Option, }, /// Project workspace was manually specified using a `rust-project.json` file. Json { project: ProjectJson, sysroot: Option, rustc_cfg: Vec }, @@ -93,7 +94,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 { @@ -108,6 +109,7 @@ impl fmt::Debug for ProjectWorkspace { rustc_cfg, cfg_overrides, toolchain, + target_layout: data_layout, } => f .debug_struct("Cargo") .field("root", &cargo.workspace_root().file_name()) @@ -120,6 +122,7 @@ impl fmt::Debug for ProjectWorkspace { .field("n_rustc_cfg", &rustc_cfg.len()) .field("n_cfg_overrides", &cfg_overrides.len()) .field("toolchain", &toolchain) + .field("data_layout", &data_layout) .finish(), ProjectWorkspace::Json { project, sysroot, rustc_cfg } => { let mut debug_struct = f.debug_struct("Json"); @@ -133,7 +136,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 +194,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( @@ -244,6 +244,11 @@ impl ProjectWorkspace { rustc_cfg::get(Some(&cargo_toml), config.target.as_deref(), &config.extra_env); let cfg_overrides = config.cfg_overrides(); + let data_layout = target_data_layout::get( + Some(&cargo_toml), + config.target.as_deref(), + &config.extra_env, + ); ProjectWorkspace::Cargo { cargo, build_scripts: WorkspaceBuildScripts::default(), @@ -252,6 +257,7 @@ impl ProjectWorkspace { rustc_cfg, cfg_overrides, toolchain, + target_layout: data_layout, } } }; @@ -291,14 +297,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 }) } @@ -386,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, } @@ -423,6 +444,7 @@ impl ProjectWorkspace { cfg_overrides: _, build_scripts, toolchain: _, + target_layout: _, } => { cargo .packages() @@ -479,21 +501,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() } } } @@ -514,6 +540,7 @@ impl ProjectWorkspace { project, sysroot, extra_env, + None, ), ProjectWorkspace::Cargo { cargo, @@ -523,6 +550,7 @@ impl ProjectWorkspace { cfg_overrides, build_scripts, toolchain: _, + target_layout, } => cargo_to_crate_graph( load_proc_macro, load, @@ -532,9 +560,10 @@ impl ProjectWorkspace { rustc_cfg.clone(), cfg_overrides, build_scripts, + target_layout.as_deref().map(Arc::from), ), ProjectWorkspace::DetachedFiles { files, sysroot, rustc_cfg } => { - detached_files_to_crate_graph(rustc_cfg.clone(), load, files, sysroot) + detached_files_to_crate_graph(rustc_cfg.clone(), load, files, sysroot, None) } }; if crate_graph.patch_cfg_if() { @@ -553,11 +582,18 @@ fn project_json_to_crate_graph( project: &ProjectJson, sysroot: &Option, extra_env: &FxHashMap, + target_layout: Option>, ) -> CrateGraph { let mut crate_graph = CrateGraph::default(); - let sysroot_deps = sysroot - .as_ref() - .map(|sysroot| sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load)); + let sysroot_deps = sysroot.as_ref().map(|sysroot| { + sysroot_to_crate_graph( + &mut crate_graph, + sysroot, + rustc_cfg.clone(), + target_layout.clone(), + load, + ) + }); let mut cfg_cache: FxHashMap<&str, Vec> = FxHashMap::default(); let crates: NoHashHashMap = project @@ -609,6 +645,7 @@ fn project_json_to_crate_graph( } else { CrateOrigin::CratesIo { repo: None, name: None } }, + target_layout.clone(), ), ) }) @@ -649,11 +686,18 @@ fn cargo_to_crate_graph( rustc_cfg: Vec, override_cfg: &CfgOverrides, build_scripts: &WorkspaceBuildScripts, + target_layout: Option>, ) -> CrateGraph { let _p = profile::span("cargo_to_crate_graph"); let mut crate_graph = CrateGraph::default(); let (public_deps, libproc_macro) = match sysroot { - Some(sysroot) => sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load), + Some(sysroot) => sysroot_to_crate_graph( + &mut crate_graph, + sysroot, + rustc_cfg.clone(), + target_layout.clone(), + load, + ), None => (SysrootPublicDeps::default(), None), }; @@ -716,6 +760,7 @@ fn cargo_to_crate_graph( file_id, &cargo[tgt].name, cargo[tgt].is_proc_macro, + target_layout.clone(), ); if cargo[tgt].kind == TargetKind::Lib { lib_tgt = Some((crate_id, cargo[tgt].name.clone())); @@ -795,6 +840,7 @@ fn cargo_to_crate_graph( &cfg_options, override_cfg, build_scripts, + target_layout, ); } } @@ -805,12 +851,21 @@ fn detached_files_to_crate_graph( rustc_cfg: Vec, load: &mut dyn FnMut(&AbsPath) -> Option, detached_files: &[AbsPathBuf], - sysroot: &Sysroot, + sysroot: &Option, + target_layout: 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(), + target_layout.clone(), + load, + ), + None => (SysrootPublicDeps::default(), None), + }; let mut cfg_options = CfgOptions::default(); cfg_options.extend(rustc_cfg); @@ -841,6 +896,7 @@ fn detached_files_to_crate_graph( repo: None, name: display_name.map(|n| n.canonical_name().to_string()), }, + target_layout.clone(), ); public_deps.add_to_crate_graph(&mut crate_graph, detached_file_crate); @@ -861,6 +917,7 @@ fn handle_rustc_crates( cfg_options: &CfgOptions, override_cfg: &CfgOverrides, build_scripts: &WorkspaceBuildScripts, + target_layout: Option>, ) { let mut rustc_pkg_crates = FxHashMap::default(); // The root package of the rustc-dev component is rustc_driver, so we match that @@ -917,6 +974,7 @@ fn handle_rustc_crates( file_id, &rustc_workspace[tgt].name, rustc_workspace[tgt].is_proc_macro, + target_layout.clone(), ); pkg_to_lib_crate.insert(pkg, crate_id); // Add dependencies on core / std / alloc for this crate @@ -981,6 +1039,7 @@ fn add_target_crate_root( file_id: FileId, cargo_name: &str, is_proc_macro: bool, + target_layout: Option>, ) -> CrateId { let edition = pkg.edition; let mut potential_cfg_options = cfg_options.clone(); @@ -1027,6 +1086,7 @@ fn add_target_crate_root( proc_macro, is_proc_macro, CrateOrigin::CratesIo { repo: pkg.repository.clone(), name: Some(pkg.name.clone()) }, + target_layout, ) } @@ -1048,6 +1108,7 @@ fn sysroot_to_crate_graph( crate_graph: &mut CrateGraph, sysroot: &Sysroot, rustc_cfg: Vec, + target_layout: Option>, load: &mut dyn FnMut(&AbsPath) -> Option, ) -> (SysrootPublicDeps, Option) { let _p = profile::span("sysroot_to_crate_graph"); @@ -1071,6 +1132,7 @@ fn sysroot_to_crate_graph( Err("no proc macro loaded for sysroot crate".into()), false, CrateOrigin::Lang(LangCrateOrigin::from(&*sysroot[krate].name)), + target_layout.clone(), ); Some((krate, crate_id)) }) diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/logger.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/logger.rs index ac10721d9551..8caadecd850b 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/logger.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/main.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/main.rs index 7bf595d2a45f..53710749de3d 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/bin/main.rs +++ b/src/tools/rust-analyzer/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); } } @@ -183,6 +183,8 @@ fn run_server() -> Result<()> { } } + config.client_specific_adjustments(&initialize_params.client_info); + let server_capabilities = rust_analyzer::server_capabilities(&config); let initialize_result = lsp_types::InitializeResult { diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/caps.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/caps.rs index 723b888d9abc..122d2e6ff1b7 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/caps.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli.rs index 60ba67e25f93..d5d877680a09 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs index 01fccc83e822..053db5fc5331 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs index 247007db0a78..fd5b3ce61f78 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/flags.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/flags.rs index 5bcc97e22612..770612cc9478 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/flags.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/highlight.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/highlight.rs index 4f9b362f1bec..84607b9fd5d5 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/highlight.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs index c74ddabb1777..af8356d041f8 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs +++ b/src/tools/rust-analyzer/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 { @@ -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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/progress_report.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/progress_report.rs index 5a2dc39d52b3..d459dd115ceb 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/progress_report.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/scip.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/scip.rs index 9edd045ab071..b050d1e95ac1 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/scip.rs +++ b/src/tools/rust-analyzer/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, @@ -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 @@ -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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/ssr.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/ssr.rs index e8291782b7ac..84c48917167b 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/ssr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/symbols.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/symbols.rs index 84659b5ea9cd..9fad6723afcd 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/symbols.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs index 6b2f22faa717..b0afbdc9a426 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs @@ -20,7 +20,7 @@ use ide_db::{ SnippetCap, }; use itertools::Itertools; -use lsp_types::{ClientCapabilities, MarkupKind}; +use lsp_types::{ClientCapabilities, ClientInfo, MarkupKind}; use project_model::{ CargoConfig, CargoFeatures, ProjectJson, ProjectJsonData, ProjectManifest, RustcSource, UnsetTestCrates, @@ -124,22 +124,23 @@ config_data! { /// Unsets `#[cfg(test)]` for the specified crates. cargo_unsetTest: Vec = "[\"core\"]", + /// Run the check command for diagnostics on save. + checkOnSave | checkOnSave_enable: bool = "true", + /// Check all targets and tests (`--all-targets`). - checkOnSave_allTargets: bool = "true", + check_allTargets | 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", + check_command | checkOnSave_command: String = "\"check\"", /// Extra arguments for `cargo check`. - checkOnSave_extraArgs: Vec = "[]", + check_extraArgs | checkOnSave_extraArgs: Vec = "[]", /// Extra environment variables that will be set when running `cargo check`. /// Extends `#rust-analyzer.cargo.extraEnv#`. - checkOnSave_extraEnv: FxHashMap = "{}", + 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. - checkOnSave_features: Option = "null", + 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 @@ -147,19 +148,21 @@ config_data! { /// - "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\"", + 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. - checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", + check_invocationStrategy | checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", /// Whether to pass `--no-default-features` to Cargo. Defaults to /// `#rust-analyzer.cargo.noDefaultFeatures#`. - checkOnSave_noDefaultFeatures: Option = "null", + 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 + /// (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 @@ -175,14 +178,14 @@ config_data! { /// cargo check --workspace --message-format=json --all-targets /// ``` /// . - checkOnSave_overrideCommand: Option> = "null", + 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"`. - checkOnSave_target | checkOnSave_targets: CheckOnSaveTargets = "[]", + 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. @@ -327,12 +330,20 @@ 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. + inlayHints_expressionAdjustmentHints_hideOutsideUnsafe: 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. inlayHints_lifetimeElisionHints_useParameterNames: bool = "false", + /// Whether to use location links for parts of type mentioned in inlay hints. + inlayHints_locationLinks: bool = "true", /// Maximum length for inlay hints. Set to null to have an unlimited length. inlayHints_maxLength: Option = "25", /// Whether to show function parameter name inlay hints at the call @@ -403,6 +414,9 @@ config_data! { /// Whether to show `can't find Cargo.toml` error message. notifications_cargoTomlNotFound: bool = "true", + /// How many worker threads in the main loop. The default `null` means to pick automatically. + numThreads: Option = "null", + /// Expand attribute macros. Requires `#rust-analyzer.procMacro.enable#` to be set. procMacro_attributes_enable: bool = "true", /// Enable support for procedural macros, implies `#rust-analyzer.cargo.buildScripts.enable#`. @@ -714,6 +728,19 @@ impl Config { } } + pub fn client_specific_adjustments(&mut self, client_info: &Option) { + // FIXME: remove this when we drop support for vscode 1.65 and below + if let Some(client) = client_info { + if client.name.contains("Code") || client.name.contains("Codium") { + if let Some(version) = &client.version { + if version.as_str() < "1.76" { + self.data.inlayHints_locationLinks = false; + } + } + } + } + } + pub fn update(&mut self, mut json: serde_json::Value) -> Result<(), ConfigUpdateError> { tracing::info!("updating config from JSON: {:#}", json); if json.is_null() || json.as_object().map_or(false, |it| it.is_empty()) { @@ -767,9 +794,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.check_command.is_empty() { error_sink.push(( - "/checkOnSave/command".to_string(), + "/check/command".to_string(), serde_json::Error::custom("expected a non-empty string"), )); } @@ -981,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 } @@ -1014,7 +1046,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.check_extraEnv.clone()); extra_env } @@ -1125,11 +1157,8 @@ impl Config { } } - pub fn flycheck(&self) -> Option { - if !self.data.checkOnSave_enable { - return None; - } - let flycheck_config = match &self.data.checkOnSave_overrideCommand { + pub fn flycheck(&self) -> FlycheckConfig { + match &self.data.check_overrideCommand { Some(args) if !args.is_empty() => { let mut args = args.clone(); let command = args.remove(0); @@ -1137,13 +1166,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.check_invocationStrategy { InvocationStrategy::Once => flycheck::InvocationStrategy::Once, InvocationStrategy::PerWorkspace => { flycheck::InvocationStrategy::PerWorkspace } }, - invocation_location: match self.data.checkOnSave_invocationLocation { + invocation_location: match self.data.check_invocationLocation { InvocationLocation::Root => { flycheck::InvocationLocation::Root(self.root_path.clone()) } @@ -1152,34 +1181,43 @@ 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(), - }, - all_targets: self.data.checkOnSave_allTargets, + command: self.data.check_command.clone(), + target_triples: self + .data + .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.check_allTargets, no_default_features: self .data - .checkOnSave_noDefaultFeatures + .check_noDefaultFeatures .unwrap_or(self.data.cargo_noDefaultFeatures), all_features: matches!( - self.data.checkOnSave_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 - .checkOnSave_features + .check_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.check_extraArgs.clone(), extra_env: self.check_on_save_extra_env(), + ansi_color_output: self.color_diagnostic_output(), }, - }; - Some(flycheck_config) + } + } + + pub fn check_on_save(&self) -> bool { + self.data.checkOnSave } pub fn runnables(&self) -> RunnablesConfig { @@ -1191,10 +1229,16 @@ impl Config { pub fn inlay_hints(&self) -> InlayHintsConfig { InlayHintsConfig { + location_links: self.data.inlayHints_locationLinks, render_colons: self.data.inlayHints_renderColons, 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, @@ -1219,6 +1263,15 @@ impl Config { }, AdjustmentHintsDef::Reborrow => ide::AdjustmentHints::ReborrowOnly, }, + 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, binding_mode_hints: self.data.inlayHints_bindingModeHints_enable, param_names_for_lifetime_elision_hints: self .data @@ -1449,6 +1502,10 @@ impl Config { } } + pub fn main_loop_num_threads(&self) -> usize { + self.data.numThreads.unwrap_or(num_cpus::get_physical().try_into().unwrap_or(1)) + } + pub fn typing_autoclose_angle(&self) -> bool { self.data.typing_autoClosingAngleBrackets_enable } @@ -1553,6 +1610,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); } @@ -1716,6 +1774,26 @@ 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 AdjustmentHintsModeDef { + Prefix, + Postfix, + PreferPrefix, + PreferPostfix, +} + #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] enum FilesWatcherDef { @@ -1817,40 +1895,35 @@ 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 { - 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)| { 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) }) @@ -1863,9 +1936,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(); @@ -1921,15 +1992,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"], @@ -2038,6 +2100,34 @@ 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." + ] + }, + "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": [ { @@ -2126,8 +2216,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", }, @@ -2137,7 +2230,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() @@ -2149,30 +2242,29 @@ 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#"[[{}]]{}:: + r#"[[{name}]]{name}:: + -- Default: ---- -{} +{default} ---- -{} +{doc} -- -"#, - 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)] @@ -2186,7 +2278,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/src/tools/rust-analyzer/crates/rust-analyzer/src/config/patch_old_style.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/config/patch_old_style.rs index 472e2e0eeeab..de6ac946a682 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/config/patch_old_style.rs +++ b/src/tools/rust-analyzer/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 -> check_features if let Some(Value::Bool(true)) = copy.pointer("/checkOnSave/allFeatures") { - merge(json, json!({ "checkOnSave": { "features": "all" } })); + merge(json, json!({ "check": { "features": "all" } })); } // completion_addCallArgumentSnippets completion_addCallParenthesis -> completion_callable_snippets @@ -116,11 +119,21 @@ 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, }; 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_* -> 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!({ "check": obj })); + } } fn merge(dst: &mut Value, src: Value) { diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics.rs index f516c194da46..83b03fe47362 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics/to_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics/to_proto.rs index beb23c54c9f0..acb416a06893 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/src/tools/rust-analyzer/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), } } @@ -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)); } } @@ -218,7 +221,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); } @@ -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, }, @@ -493,7 +496,7 @@ fn rustc_code_description(code: Option<&str>) -> Option) -> 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/src/tools/rust-analyzer/crates/rust-analyzer/src/dispatch.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/dispatch.rs index 57899b599146..715804449a04 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/dispatch.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/dispatch.rs @@ -145,7 +145,7 @@ impl<'a> 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/src/tools/rust-analyzer/crates/rust-analyzer/src/from_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/from_proto.rs index dd433b0f4d31..2dbb14fcd9a6 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/from_proto.rs +++ b/src/tools/rust-analyzer/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) } }; @@ -67,7 +64,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/src/tools/rust-analyzer/crates/rust-analyzer/src/global_state.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/global_state.rs index 4e8bc8d6462c..c6f4e9ce07f0 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/global_state.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/global_state.rs @@ -134,7 +134,7 @@ impl GlobalState { let task_pool = { let (sender, receiver) = unbounded(); - let handle = TaskPool::new(sender); + let handle = TaskPool::new_with_threads(sender, config.main_loop_num_threads()); Handle { handle, receiver } }; @@ -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/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers.rs index d190a9f4e2ca..59bdd3061272 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers.rs @@ -28,7 +28,8 @@ 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 tracing::error; use vfs::AbsPathBuf; use crate::{ @@ -729,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 { @@ -812,18 +813,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, @@ -910,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)) } @@ -990,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 @@ -1112,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 @@ -1157,8 +1144,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()) } @@ -1202,7 +1189,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 })) } @@ -1384,9 +1371,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, @@ -1782,14 +1786,15 @@ fn run_rustfmt( let file_id = from_proto::file_id(snap, &text_document.uri)?; let file = snap.analysis.file_text(file_id)?; - // find the edition of the package the file belongs to - // (if it belongs to multiple we'll just pick the first one and pray) - let edition = snap + // Determine the edition of the crate the file belongs to (if there's multiple, we pick the + // highest edition). + let editions = snap .analysis .relevant_crates_for(file_id)? .into_iter() - .find_map(|crate_id| snap.cargo_target_for_crate_root(crate_id)) - .map(|(ws, target)| ws[ws[target].package].edition); + .map(|crate_id| snap.analysis.crate_edition(crate_id)) + .collect::, _>>()?; + let edition = editions.iter().copied().max(); let line_index = snap.file_line_index(file_id)?; @@ -1863,7 +1868,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())?; @@ -1896,9 +1901,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/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs index 96b1cb6b1271..405d261db6fb 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/lib.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lib.rs index 552379752fa6..32dc3750fdf6 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_ext.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_ext.rs index 8cc5648f3ce0..65620b4209b4 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_ext.rs +++ b/src/tools/rust-analyzer/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 {} @@ -132,12 +132,31 @@ pub struct ExpandedMacro { pub enum CancelFlycheck {} -impl Request for CancelFlycheck { +impl Notification for CancelFlycheck { type Params = (); - type Result = (); const METHOD: &'static str = "rust-analyzer/cancelFlycheck"; } +pub enum RunFlycheck {} + +impl Notification for RunFlycheck { + type Params = RunFlycheckParams; + const METHOD: &'static str = "rust-analyzer/runFlycheck"; +} + +pub enum ClearFlycheck {} + +impl Notification for ClearFlycheck { + type Params = (); + const METHOD: &'static str = "rust-analyzer/clearFlycheck"; +} + +#[derive(Deserialize, Serialize, Debug)] +#[serde(rename_all = "camelCase")] +pub struct RunFlycheckParams { + pub text_document: Option, +} + pub enum MatchingBrace {} impl Request for MatchingBrace { @@ -550,7 +569,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/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_utils.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_utils.rs index 0971dc36f3a5..dcaee92857ab 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp_utils.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs index 274588ce0e07..0bc940dfe8da 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs +++ b/src/tools/rust-analyzer/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)", @@ -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(()) } @@ -516,7 +513,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, ) @@ -561,10 +558,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) => { @@ -581,10 +575,7 @@ impl GlobalState { // 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(), - } + format!("{}", self.config.flycheck()) } else { format!("cargo check (#{})", id + 1) }; @@ -593,7 +584,7 @@ impl GlobalState { state, message, None, - Some(format!("rust-analyzer/checkOnSave/{}", id)), + Some(format!("rust-analyzer/flycheck/{id}")), ); } } @@ -638,7 +629,6 @@ 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) @@ -703,6 +693,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 { @@ -714,7 +786,7 @@ impl GlobalState { })? .on::(|this, params| { if let lsp_types::NumberOrString::String(s) = ¶ms.token { - if let Some(id) = s.strip_prefix("rust-analyzer/checkOnSave/") { + if let Some(id) = s.strip_prefix("rust-analyzer/flycheck/") { if let Ok(id) = u32::from_str_radix(id, 10) { if let Some(flycheck) = this.flycheck.get(id as usize) { flycheck.cancel(); @@ -743,6 +815,7 @@ impl GlobalState { } Ok(()) })? + .on::(handlers::handle_cancel_flycheck)? .on::(|this, params| { if let Ok(path) = from_proto::vfs_path(¶ms.text_document.uri) { match this.mem_docs.get_mut(&path) { @@ -782,99 +855,42 @@ impl GlobalState { } Ok(()) })? + .on::(|this, ()| { + this.diagnostics.clear_check_all(); + 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 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())); } } - 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 !this.config.check_on_save() || 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(); + } else if this.config.check_on_save() { + // No specific flycheck was triggered, so let's trigger all of them. + for flycheck in this.flycheck.iter() { + flycheck.restart(); + } } Ok(()) })? diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/reload.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/reload.rs index fcfe4be0b8ce..9bbce70ec0a8 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/reload.rs +++ b/src/tools/rust-analyzer/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); @@ -224,6 +226,7 @@ impl GlobalState { build_scripts: _, toolchain: _, + target_layout: _, } => Some((cargo, sysroot, rustc, rustc_cfg, cfg_overrides)), _ => None, }; @@ -447,15 +450,7 @@ impl GlobalState { fn reload_flycheck(&mut self) { let _p = profile::span("GlobalState::reload_flycheck"); - let config = match self.config.flycheck() { - Some(it) => it, - None => { - self.flycheck = Arc::new([]); - self.diagnostics.clear_check_all(); - return; - } - }; - + let config = self.config.flycheck(); let sender = self.flycheck_sender.clone(); let invocation_strategy = match config { FlycheckConfig::CargoCommand { .. } => flycheck::InvocationStrategy::PerWorkspace, @@ -466,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 => { diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/semantic_tokens.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/semantic_tokens.rs index c48410ed55e9..c2cc3f422d20 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/semantic_tokens.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/src/task_pool.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/task_pool.rs index aeeb3b7c582b..616e449984ae 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/task_pool.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/task_pool.rs @@ -8,12 +8,13 @@ pub(crate) struct TaskPool { } impl TaskPool { - pub(crate) fn new(sender: Sender) -> TaskPool { + pub(crate) fn new_with_threads(sender: Sender, threads: usize) -> TaskPool { const STACK_SIZE: usize = 8 * 1024 * 1024; let inner = threadpool::Builder::new() .thread_name("Worker".into()) .thread_stack_size(STACK_SIZE) + .num_threads(threads) .build(); TaskPool { sender, inner } } diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/to_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/to_proto.rs index 81cc1952ba5c..e736b2ff9a3b 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/to_proto.rs +++ b/src/tools/rust-analyzer/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()) @@ -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}")); } } @@ -434,42 +434,52 @@ 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(" = "), _ => {} } 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::DiscriminantHint | InlayKind::ChainingHint | InlayKind::GenericParamListHint - | InlayKind::AdjustmentHintClosingParenthesis + | InlayKind::ClosingParenthesis + | InlayKind::AdjustmentHintPostfix | 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::DiscriminantHint + | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::LifetimeHint | InlayKind::ParameterHint => false, }), padding_right: Some(match inlay_hint.kind { - InlayKind::AdjustmentHintClosingParenthesis + InlayKind::ClosingParenthesis + | InlayKind::OpeningParenthesis | InlayKind::ChainingHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::TypeHint + | InlayKind::DiscriminantHint | InlayKind::ClosingBraceHint => false, InlayKind::BindingModeHint => inlay_hint.label.as_simple_str() != Some("&"), InlayKind::ParameterHint | InlayKind::LifetimeHint => true, @@ -479,11 +489,14 @@ pub(crate) fn inlay_hint( InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint | InlayKind::ChainingHint => { Some(lsp_types::InlayHintKind::TYPE) } - InlayKind::AdjustmentHintClosingParenthesis + InlayKind::ClosingParenthesis + | InlayKind::DiscriminantHint + | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::GenericParamListHint | InlayKind::LifetimeHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::ClosingBraceHint => None, }, text_edits: None, @@ -492,7 +505,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 +517,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, @@ -1103,7 +1122,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, }); } @@ -1164,7 +1183,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 { + 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, @@ -1339,7 +1361,7 @@ pub(crate) fn implementation_title(count: usize) -> String { if count == 1 { "1 implementation".into() } else { - format!("{} implementations", count) + format!("{count} implementations") } } @@ -1347,7 +1369,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/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/main.rs b/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/main.rs index fa55f7d90c49..5e3e19d44d73 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/main.rs +++ b/src/tools/rust-analyzer/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!([ @@ -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 = @@ -595,8 +594,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 @@ -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" } @@ -622,7 +620,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 +643,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 +940,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/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/sourcegen.rs index e6ac018a05fe..2eafb0da6921 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/sourcegen.rs +++ b/src/tools/rust-analyzer/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)] @@ -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/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/support.rs b/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/support.rs index 7257445dabe0..269212ebb99c 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/support.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/testdir.rs b/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/testdir.rs index 3bec23a91175..f7fceb588869 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/testdir.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/tidy.rs b/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/tidy.rs index 24e68eca676d..35b5af731925 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/src/tools/rust-analyzer/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 +" ) } } @@ -194,6 +193,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 " @@ -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/src/tools/rust-analyzer/crates/sourcegen/src/lib.rs b/src/tools/rust-analyzer/crates/sourcegen/src/lib.rs index 4e0ee63f32f2..72d26635c336 100644 --- a/src/tools/rust-analyzer/crates/sourcegen/src/lib.rs +++ b/src/tools/rust-analyzer/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() @@ -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(); @@ -122,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!( @@ -163,7 +160,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 } @@ -178,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/src/tools/rust-analyzer/crates/stdx/src/hash.rs b/src/tools/rust-analyzer/crates/stdx/src/hash.rs index 9909d71bdf06..0c21d2674b1a 100644 --- a/src/tools/rust-analyzer/crates/stdx/src/hash.rs +++ b/src/tools/rust-analyzer/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) { diff --git a/src/tools/rust-analyzer/crates/stdx/src/panic_context.rs b/src/tools/rust-analyzer/crates/stdx/src/panic_context.rs index f8fafc5a6772..c3e8813b0e81 100644 --- a/src/tools/rust-analyzer/crates/stdx/src/panic_context.rs +++ b/src/tools/rust-analyzer/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); @@ -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/src/tools/rust-analyzer/crates/syntax/rust.ungram b/src/tools/rust-analyzer/crates/syntax/rust.ungram index 0a0cb0290d6c..2c67586a3905 100644 --- a/src/tools/rust-analyzer/crates/syntax/rust.ungram +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/syntax/src/algo.rs b/src/tools/rust-analyzer/crates/syntax/src/algo.rs index 8b14789dd917..c402a7bceaeb 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/algo.rs +++ b/src/tools/rust-analyzer/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 @@ -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/src/tools/rust-analyzer/crates/syntax/src/ast.rs b/src/tools/rust-analyzer/crates/syntax/src/ast.rs index 4aa64d0d6e8a..10c04575833c 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast.rs +++ b/src/tools/rust-analyzer/crates/syntax/src/ast.rs @@ -9,6 +9,7 @@ mod operators; pub mod edit; pub mod edit_in_place; pub mod make; +pub mod prec; use std::marker::PhantomData; diff --git a/src/tools/rust-analyzer/crates/syntax/src/ast/edit.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/edit.rs index 15805dfc8608..5bc6b780e47f 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast/edit.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/syntax/src/ast/edit_in_place.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/edit_in_place.rs index 660c057e99c5..a493c92e7dae 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast/edit_in_place.rs +++ b/src/tools/rust-analyzer/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}"))); } _ => (), } @@ -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/src/tools/rust-analyzer/crates/syntax/src/ast/generated/nodes.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/generated/nodes.rs index 2ea715f47fb2..a214a5e4462c 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast/generated/nodes.rs +++ b/src/tools/rust-analyzer/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, } @@ -3892,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 } } @@ -3963,6 +3992,7 @@ impl AstNode for AnyHasAttrs { | TUPLE_EXPR | WHILE_EXPR | YIELD_EXPR + | YEET_EXPR | LET_EXPR | UNDERSCORE_EXPR | STMT_LIST @@ -3976,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 } } @@ -4013,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 } } @@ -4028,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 } } @@ -4041,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 } } @@ -4054,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 } } @@ -4089,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 } } @@ -4107,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 } } @@ -4141,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 } } @@ -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/src/tools/rust-analyzer/crates/syntax/src/ast/make.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/make.rs index 8c26009add2b..d5b3296980c9 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast/make.rs +++ b/src/tools/rust-analyzer/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 { @@ -719,12 +726,23 @@ 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(), - }; - ast_from_text(&format!("fn f<{name}{bound}>() {{ }}")) +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 bounds = bounds.map_or_else(String::new, |it| format!(": {it}")); + ast_from_text(&format!("fn f<{name}{bounds}>() {{ }}")) } pub fn lifetime_param(lifetime: ast::Lifetime) -> ast::LifetimeParam { diff --git a/src/tools/rust-analyzer/crates/syntax/src/ast/prec.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/prec.rs new file mode 100644 index 000000000000..4ec388914e60 --- /dev/null +++ b/src/tools/rust-analyzer/crates/syntax/src/ast/prec.rs @@ -0,0 +1,328 @@ +//! Precedence representation. + +use crate::{ + ast::{self, BinaryOp, Expr, HasArgList}, + match_ast, AstNode, SyntaxNode, +}; + +impl Expr { + // Implementation is based on + // - https://doc.rust-lang.org/reference/expressions.html#expression-precedence + // - https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html + // - rustc source, including, but not limited to + // - https://github.com/rust-lang/rust/blob/b6852428a8ea9728369b64b9964cad8e258403d3/compiler/rustc_ast/src/util/parser.rs#L296 + + /// Returns `true` if `self` would need to be wrapped in parentheses given that its parent is `parent`. + pub fn needs_parens_in(&self, parent: SyntaxNode) -> bool { + match_ast! { + match parent { + ast::Expr(e) => self.needs_parens_in_expr(&e), + ast::Stmt(e) => self.needs_parens_in_stmt(Some(&e)), + ast::StmtList(_) => self.needs_parens_in_stmt(None), + ast::ArgList(_) => false, + ast::MatchArm(_) => false, + _ => false, + } + } + } + + fn needs_parens_in_expr(&self, parent: &Expr) -> bool { + // Special-case block weirdness + if parent.child_is_followed_by_a_block() { + use Expr::*; + match self { + // Cases like `if return {}` (need parens or else `{}` is returned, instead of being `if`'s body) + ReturnExpr(e) if e.expr().is_none() => return true, + BreakExpr(e) if e.expr().is_none() => return true, + YieldExpr(e) if e.expr().is_none() => return true, + + // Same but with `..{}` + RangeExpr(e) if matches!(e.end(), Some(BlockExpr(..))) => return true, + + // Similarly with struct literals, e.g. `if S{} == 1 {}` + _ if self.contains_exterior_struct_lit() => return true, + _ => {} + } + } + + // Special-case `return.f()` + if self.is_ret_like_with_no_value() && parent.is_postfix() { + return false; + } + + if self.is_paren_like() + || parent.is_paren_like() + || self.is_prefix() && (parent.is_prefix() || !self.is_ordered_before(parent)) + || self.is_postfix() && (parent.is_postfix() || self.is_ordered_before(parent)) + { + return false; + } + + let (left, right, inv) = match self.is_ordered_before(parent) { + true => (self, parent, false), + false => (parent, self, true), + }; + + let (_, left_right_bp) = left.binding_power(); + let (right_left_bp, _) = right.binding_power(); + + (left_right_bp < right_left_bp) ^ inv + } + + fn needs_parens_in_stmt(&self, stmt: Option<&ast::Stmt>) -> bool { + use Expr::*; + + // Prevent false-positives in cases like `fn x() -> u8 { ({ 0 } + 1) }`, + // `{ { 0 } + 1 }` won't parse -- `{ 0 }` would be parsed as a self-contained stmt, + // leaving `+ 1` as a parse error. + let mut innermost = self.clone(); + loop { + let next = match &innermost { + BinExpr(e) => e.lhs(), + CallExpr(e) => e.expr(), + CastExpr(e) => e.expr(), + IndexExpr(e) => e.base(), + _ => break, + }; + + if let Some(next) = next { + innermost = next; + if !innermost.requires_semi_to_be_stmt() { + return true; + } + } else { + break; + } + } + + // Not every expression can be followed by `else` in the `let-else` + if let Some(ast::Stmt::LetStmt(e)) = stmt { + if e.let_else().is_some() { + match self { + BinExpr(e) + if e.op_kind() + .map(|op| matches!(op, BinaryOp::LogicOp(_))) + .unwrap_or(false) => + { + return true + } + _ if self.clone().trailing_brace().is_some() => return true, + _ => {} + } + } + } + + false + } + + /// Returns left and right so-called "binding powers" of this expression. + fn binding_power(&self) -> (u8, u8) { + use ast::{ArithOp::*, BinaryOp::*, Expr::*, LogicOp::*}; + + match self { + // (0, 0) -- paren-like/nullary + // (0, N) -- prefix + // (N, 0) -- postfix + // (N, N) -- infix, requires parens + // (N, N+1) -- infix, left to right associative + // (N+1, N) -- infix, right to left associative + // N is odd + // + ContinueExpr(_) => (0, 0), + + ClosureExpr(_) | ReturnExpr(_) | YieldExpr(_) | YeetExpr(_) | BreakExpr(_) => (0, 1), + + RangeExpr(_) => (5, 5), + + BinExpr(e) => { + // Return a dummy value if we don't know the op + let Some(op) = e.op_kind() else { return (0, 0) }; + match op { + Assignment { .. } => (4, 3), + // + // Ranges are here in order :) + // + LogicOp(op) => match op { + Or => (7, 8), + And => (9, 10), + }, + CmpOp(_) => (11, 11), + ArithOp(op) => match op { + BitOr => (13, 14), + BitXor => (15, 16), + BitAnd => (17, 18), + Shl | Shr => (19, 20), + Add | Sub => (21, 22), + Mul | Div | Rem => (23, 24), + }, + } + } + + CastExpr(_) => (25, 26), + + BoxExpr(_) | RefExpr(_) | LetExpr(_) | PrefixExpr(_) => (0, 27), + + AwaitExpr(_) | CallExpr(_) | MethodCallExpr(_) | IndexExpr(_) | TryExpr(_) + | MacroExpr(_) => (29, 0), + + FieldExpr(_) => (31, 32), + + ArrayExpr(_) | TupleExpr(_) | Literal(_) | PathExpr(_) | ParenExpr(_) | IfExpr(_) + | WhileExpr(_) | ForExpr(_) | LoopExpr(_) | MatchExpr(_) | BlockExpr(_) + | RecordExpr(_) | UnderscoreExpr(_) => (0, 0), + } + } + + fn is_paren_like(&self) -> bool { + matches!(self.binding_power(), (0, 0)) + } + + fn is_prefix(&self) -> bool { + matches!(self.binding_power(), (0, 1..)) + } + + fn is_postfix(&self) -> bool { + matches!(self.binding_power(), (1.., 0)) + } + + /// Returns `true` if this expression can't be a standalone statement. + fn requires_semi_to_be_stmt(&self) -> bool { + use Expr::*; + !matches!( + self, + IfExpr(..) | MatchExpr(..) | BlockExpr(..) | WhileExpr(..) | LoopExpr(..) | ForExpr(..) + ) + } + + /// If an expression ends with `}`, returns the innermost expression ending in this `}`. + fn trailing_brace(mut self) -> Option { + use Expr::*; + + loop { + let rhs = match self { + RefExpr(e) => e.expr(), + BinExpr(e) => e.rhs(), + BoxExpr(e) => e.expr(), + BreakExpr(e) => e.expr(), + LetExpr(e) => e.expr(), + RangeExpr(e) => e.end(), + ReturnExpr(e) => e.expr(), + PrefixExpr(e) => e.expr(), + YieldExpr(e) => e.expr(), + ClosureExpr(e) => e.body(), + + BlockExpr(..) | ForExpr(..) | IfExpr(..) | LoopExpr(..) | MatchExpr(..) + | RecordExpr(..) | WhileExpr(..) => break Some(self), + _ => break None, + }; + + self = rhs?; + } + } + + /// Expressions that syntactically contain an "exterior" struct literal i.e., not surrounded by any + /// parens or other delimiters, e.g., `X { y: 1 }`, `X { y: 1 }.method()`, `foo == X { y: 1 }` and + /// `X { y: 1 } == foo` all do, but `(X { y: 1 }) == foo` does not. + fn contains_exterior_struct_lit(&self) -> bool { + return contains_exterior_struct_lit_inner(self).is_some(); + + fn contains_exterior_struct_lit_inner(expr: &Expr) -> Option<()> { + use Expr::*; + + match expr { + RecordExpr(..) => Some(()), + + // X { y: 1 } + X { y: 2 } + BinExpr(e) => e + .lhs() + .as_ref() + .and_then(contains_exterior_struct_lit_inner) + .or_else(|| e.rhs().as_ref().and_then(contains_exterior_struct_lit_inner)), + + // `&X { y: 1 }`, `X { y: 1 }.y`, `X { y: 1 }.bar(...)`, etc + IndexExpr(e) => contains_exterior_struct_lit_inner(&e.base()?), + AwaitExpr(e) => contains_exterior_struct_lit_inner(&e.expr()?), + PrefixExpr(e) => contains_exterior_struct_lit_inner(&e.expr()?), + CastExpr(e) => contains_exterior_struct_lit_inner(&e.expr()?), + FieldExpr(e) => contains_exterior_struct_lit_inner(&e.expr()?), + MethodCallExpr(e) => contains_exterior_struct_lit_inner(&e.receiver()?), + + _ => None, + } + } + } + + /// Returns true if self is one of `return`, `break`, `continue` or `yield` with **no associated value**. + fn is_ret_like_with_no_value(&self) -> bool { + use Expr::*; + + match self { + ReturnExpr(e) => e.expr().is_none(), + BreakExpr(e) => e.expr().is_none(), + ContinueExpr(_) => true, + YieldExpr(e) => e.expr().is_none(), + _ => false, + } + } + + fn is_ordered_before(&self, other: &Expr) -> bool { + use Expr::*; + + return order(self) < order(other); + + /// Returns text range that can be used to compare two expression for order (which goes first). + fn order(this: &Expr) -> rowan::TextSize { + // For non-paren-like operators: get the operator itself + let token = match this { + RangeExpr(e) => e.op_token(), + BinExpr(e) => e.op_token(), + CastExpr(e) => e.as_token(), + FieldExpr(e) => e.dot_token(), + AwaitExpr(e) => e.dot_token(), + BoxExpr(e) => e.box_token(), + BreakExpr(e) => e.break_token(), + CallExpr(e) => e.arg_list().and_then(|args| args.l_paren_token()), + ClosureExpr(e) => e.param_list().and_then(|params| params.l_paren_token()), + ContinueExpr(e) => e.continue_token(), + IndexExpr(e) => e.l_brack_token(), + MethodCallExpr(e) => e.dot_token(), + PrefixExpr(e) => e.op_token(), + RefExpr(e) => e.amp_token(), + 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(_) + | IfExpr(_) | WhileExpr(_) | ForExpr(_) | LoopExpr(_) | MatchExpr(_) + | BlockExpr(_) | RecordExpr(_) | UnderscoreExpr(_) | MacroExpr(_) => None, + }; + + token.map(|t| t.text_range()).unwrap_or_else(|| this.syntax().text_range()).start() + } + } + + fn child_is_followed_by_a_block(&self) -> bool { + use Expr::*; + + match self { + ArrayExpr(_) | AwaitExpr(_) | BlockExpr(_) | CallExpr(_) | CastExpr(_) + | ClosureExpr(_) | FieldExpr(_) | IndexExpr(_) | Literal(_) | LoopExpr(_) + | MacroExpr(_) | MethodCallExpr(_) | ParenExpr(_) | PathExpr(_) | RecordExpr(_) + | TryExpr(_) | TupleExpr(_) | UnderscoreExpr(_) => false, + + // For BinExpr and RangeExpr this is technically wrong -- the child can be on the left... + BinExpr(_) | RangeExpr(_) | BoxExpr(_) | BreakExpr(_) | ContinueExpr(_) + | PrefixExpr(_) | RefExpr(_) | ReturnExpr(_) | YieldExpr(_) | YeetExpr(_) + | LetExpr(_) => self + .syntax() + .parent() + .and_then(Expr::cast) + .map(|e| e.child_is_followed_by_a_block()) + .unwrap_or(false), + + ForExpr(_) | IfExpr(_) | MatchExpr(_) | WhileExpr(_) => true, + } + } +} diff --git a/src/tools/rust-analyzer/crates/syntax/src/ast/token_ext.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/token_ext.rs index 8990f7a7d4e8..2cd312e7f4f8 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ast/token_ext.rs +++ b/src/tools/rust-analyzer/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[..]) @@ -483,7 +481,7 @@ bcde", b"abcde", #[test] fn test_value_underscores() { - 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); diff --git a/src/tools/rust-analyzer/crates/syntax/src/fuzz.rs b/src/tools/rust-analyzer/crates/syntax/src/fuzz.rs index 7c7a60d62994..239a89f9b2d5 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/fuzz.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/syntax/src/hacks.rs b/src/tools/rust-analyzer/crates/syntax/src/hacks.rs index ec3d3d444c36..a3023c3195f3 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/hacks.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/syntax/src/ptr.rs b/src/tools/rust-analyzer/crates/syntax/src/ptr.rs index a886972fff96..1d4a89201ae4 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ptr.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/syntax/src/ted.rs b/src/tools/rust-analyzer/crates/syntax/src/ted.rs index a47b4b11c0ae..29788d05e845 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/ted.rs +++ b/src/tools/rust-analyzer/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"); } } @@ -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" { @@ -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/src/tools/rust-analyzer/crates/syntax/src/tests/ast_src.rs b/src/tools/rust-analyzer/crates/syntax/src/tests/ast_src.rs index cf5be1c30fba..3ff6e03006b5 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/tests/ast_src.rs +++ b/src/tools/rust-analyzer/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", diff --git a/src/tools/rust-analyzer/crates/syntax/src/tests/sourcegen_ast.rs b/src/tools/rust-analyzer/crates/syntax/src/tests/sourcegen_ast.rs index 712ef5f63b65..03aa2c451e84 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/tests/sourcegen_ast.rs +++ b/src/tools/rust-analyzer/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 @@ -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/src/tools/rust-analyzer/crates/syntax/src/validation.rs b/src/tools/rust-analyzer/crates/syntax/src/validation.rs index 1eea2346451d..fb2381110bfe 100644 --- a/src/tools/rust-analyzer/crates/syntax/src/validation.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/test-utils/src/assert_linear.rs b/src/tools/rust-analyzer/crates/test-utils/src/assert_linear.rs index 24502ddb41af..15c30c52a548 100644 --- a/src/tools/rust-analyzer/crates/test-utils/src/assert_linear.rs +++ b/src/tools/rust-analyzer/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; @@ -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); } diff --git a/src/tools/rust-analyzer/crates/test-utils/src/bench_fixture.rs b/src/tools/rust-analyzer/crates/test-utils/src/bench_fixture.rs index 979156263de1..9296fd2e6835 100644 --- a/src/tools/rust-analyzer/crates/test-utils/src/bench_fixture.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/test-utils/src/fixture.rs b/src/tools/rust-analyzer/crates/test-utils/src/fixture.rs index c824f5af7258..d1afd0039aa4 100644 --- a/src/tools/rust-analyzer/crates/test-utils/src/fixture.rs +++ b/src/tools/rust-analyzer/crates/test-utils/src/fixture.rs @@ -78,6 +78,7 @@ pub struct Fixture { pub edition: Option, pub env: FxHashMap, pub introduce_new_source_root: Option, + pub target_data_layout: Option, } pub struct MiniCore { @@ -134,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:?}" ); } @@ -152,7 +151,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() { @@ -171,7 +170,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(); @@ -181,10 +180,10 @@ impl Fixture { let mut cfg_key_values = Vec::new(); let mut env = FxHashMap::default(); 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(), @@ -213,16 +212,15 @@ impl Fixture { } } "new_source_root" => introduce_new_source_root = Some(value.to_string()), - _ => panic!("bad component: {:?}", component), + "target_data_layout" => target_data_layout = Some(value.to_string()), + _ => panic!("bad component: {component:?}"), } } 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:?}" ); } @@ -237,6 +235,7 @@ impl Fixture { edition, env, introduce_new_source_root, + target_data_layout, } } } @@ -249,7 +248,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); } } @@ -259,7 +258,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()); } @@ -345,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); @@ -365,7 +360,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/src/tools/rust-analyzer/crates/test-utils/src/lib.rs b/src/tools/rust-analyzer/crates/test-utils/src/lib.rs index 8a9cfb6c22e4..a7a52e08e75a 100644 --- a/src/tools/rust-analyzer/crates/test-utils/src/lib.rs +++ b/src/tools/rust-analyzer/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) } @@ -397,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 } @@ -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); } @@ -480,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() diff --git a/src/tools/rust-analyzer/crates/test-utils/src/minicore.rs b/src/tools/rust-analyzer/crates/test-utils/src/minicore.rs index 69d2e62b2567..3ca63fcab90d 100644 --- a/src/tools/rust-analyzer/crates/test-utils/src/minicore.rs +++ b/src/tools/rust-analyzer/crates/test-utils/src/minicore.rs @@ -20,6 +20,7 @@ //! derive: //! drop: //! eq: sized +//! error: fmt //! fmt: result //! fn: //! from: sized @@ -29,13 +30,16 @@ //! index: sized //! iterator: option //! iterators: iterator, fn +//! non_zero: //! option: //! ord: eq, option //! pin: //! range: //! result: +//! send: sized //! sized: //! slice: +//! sync: sized //! try: //! unsize: sized @@ -47,6 +51,24 @@ pub mod marker { pub trait Sized {} // endregion:sized + // region:send + pub unsafe auto trait Send {} + + impl !Send for *const T {} + impl !Send for *mut T {} + // region:sync + unsafe impl Send for &T {} + unsafe impl Send for &mut T {} + // endregion:sync + // endregion:send + + // region:sync + pub unsafe auto trait Sync {} + + impl !Sync for *const T {} + impl !Sync for *mut T {} + // endregion:sync + // region:unsize #[lang = "unsize"] pub trait Unsize {} @@ -91,7 +113,7 @@ pub mod default { fn default() -> Self; } // region:derive - #[rustc_builtin_macro] + #[rustc_builtin_macro(Default, attributes(default))] pub macro Default($item:item) {} // endregion:derive } @@ -360,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 @@ -438,6 +466,9 @@ pub mod fmt { pub trait Debug { fn fmt(&self, f: &mut Formatter<'_>) -> Result; } + pub trait Display { + fn fmt(&self, f: &mut Formatter<'_>) -> Result; + } } // endregion:fmt @@ -680,6 +711,15 @@ mod macros { } // endregion:derive +// region:non_zero +pub mod num { + #[repr(transparent)] + #[rustc_layout_scalar_valid_range_start(1)] + #[rustc_nonnull_optimization_guaranteed] + pub struct NonZeroU8(u8); +} +// endregion:non_zero + // region:bool_impl #[lang = "bool"] impl bool { @@ -693,6 +733,17 @@ impl bool { } // endregion:bool_impl +// region:error +pub mod error { + #[rustc_has_incoherent_inherent_impls] + pub trait Error: crate::fmt::Debug + crate::fmt::Display { + fn source(&self) -> Option<&(dyn Error + 'static)> { + None + } + } +} +// endregion:error + pub mod prelude { pub mod v1 { pub use crate::{ @@ -705,7 +756,9 @@ pub mod prelude { iter::{IntoIterator, Iterator}, // :iterator macros::builtin::derive, // :derive marker::Copy, // :copy + marker::Send, // :send marker::Sized, // :sized + marker::Sync, // :sync mem::drop, // :drop ops::Drop, // :drop ops::{Fn, FnMut, FnOnce}, // :fn diff --git a/src/tools/rust-analyzer/crates/toolchain/src/lib.rs b/src/tools/rust-analyzer/crates/toolchain/src/lib.rs index b05da769161e..67bdad2aadd8 100644 --- a/src/tools/rust-analyzer/crates/toolchain/src/lib.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/tt/src/buffer.rs b/src/tools/rust-analyzer/crates/tt/src/buffer.rs index 69226bd4c480..d27a7aa0d4d3 100644 --- a/src/tools/rust-analyzer/crates/tt/src/buffer.rs +++ b/src/tools/rust-analyzer/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)), diff --git a/src/tools/rust-analyzer/crates/tt/src/lib.rs b/src/tools/rust-analyzer/crates/tt/src/lib.rs index a54861de9587..353b09fd8c1e 100644 --- a/src/tools/rust-analyzer/crates/tt/src/lib.rs +++ b/src/tools/rust-analyzer/crates/tt/src/lib.rs @@ -86,10 +86,20 @@ pub enum Spacing { #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Ident { + /// Identifier or keyword. Unlike rustc, we keep "r#" prefix when it represents a raw identifier. pub text: SmolStr, pub id: TokenId, } +impl Ident { + /// Constructor intended to be used only by proc macro server. `text` should not contain raw + /// identifier prefix. + pub fn new_with_is_raw(text: SmolStr, id: TokenId, is_raw: bool) -> Self { + let text = if is_raw { SmolStr::from_iter(["r#", &text]) } else { text }; + Ident { text, id } + } +} + impl Leaf { pub fn id(&self) -> TokenId { match self { @@ -105,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 { @@ -130,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 {} [{}] {}", @@ -139,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)?; @@ -302,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/src/tools/rust-analyzer/crates/vfs/src/file_set.rs b/src/tools/rust-analyzer/crates/vfs/src/file_set.rs index e0ef737b3fc0..700aebe0b34f 100644 --- a/src/tools/rust-analyzer/crates/vfs/src/file_set.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/vfs/src/lib.rs b/src/tools/rust-analyzer/crates/vfs/src/lib.rs index afc9a0fa6fb2..c61f30387b70 100644 --- a/src/tools/rust-analyzer/crates/vfs/src/lib.rs +++ b/src/tools/rust-analyzer/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. /// diff --git a/src/tools/rust-analyzer/crates/vfs/src/path_interner.rs b/src/tools/rust-analyzer/crates/vfs/src/path_interner.rs index 6e049f0d40f7..64f51976053d 100644 --- a/src/tools/rust-analyzer/crates/vfs/src/path_interner.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/vfs/src/vfs_path.rs b/src/tools/rust-analyzer/crates/vfs/src/vfs_path.rs index 668c7320d4ec..b23c9f1966d5 100644 --- a/src/tools/rust-analyzer/crates/vfs/src/vfs_path.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/docs/dev/README.md b/src/tools/rust-analyzer/docs/dev/README.md index 4ac75b4bbfd9..cdab6b09928c 100644 --- a/src/tools/rust-analyzer/docs/dev/README.md +++ b/src/tools/rust-analyzer/docs/dev/README.md @@ -200,7 +200,7 @@ Look for `fn benchmark_xxx` tests for a quick way to reproduce performance probl ## Release Process -Release process is handled by `release`, `dist` and `promote` xtasks, `release` being the main one. +Release process is handled by `release`, `dist`, `publish-release-notes` and `promote` xtasks, `release` being the main one. `release` assumes that you have checkouts of `rust-analyzer`, `rust-analyzer.github.io`, and `rust-lang/rust` in the same directory: @@ -231,8 +231,9 @@ Release steps: * 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 subtree. +5. Run `cargo xtask publish-release-notes ` -- this will convert the changelog entry in AsciiDoc to Markdown and update the body of GitHub Releases entry. +6. Tweet +7. 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/src/tools/rust-analyzer/docs/dev/lsp-extensions.md b/src/tools/rust-analyzer/docs/dev/lsp-extensions.md index fe316fcae9b8..a4780af1a261 100644 --- a/src/tools/rust-analyzer/docs/dev/lsp-extensions.md +++ b/src/tools/rust-analyzer/docs/dev/lsp-extensions.md @@ -1,5 +1,5 @@ [^\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", - path: "/diagnostic message", + scheme: diagnostics.URI_SCHEME, + path: `/diagnostic message [${idx.toString()}]`, fragment: uri.toString(), query: idx.toString(), }), - value: "Click for full compiler diagnostic", + value: value ?? "Click for full compiler diagnostic", }; } }); - return next(uri, diagnostics); + return next(uri, diagnosticList); }, async provideHover( document: vscode.TextDocument, @@ -302,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", diff --git a/src/tools/rust-analyzer/editors/code/src/commands.ts b/src/tools/rust-analyzer/editors/code/src/commands.ts index 312087e4cffe..cb4e13e2c604 100644 --- a/src/tools/rust-analyzer/editors/code/src/commands.ts +++ b/src/tools/rust-analyzer/editors/code/src/commands.ts @@ -788,8 +788,23 @@ export function openDocs(ctx: CtxInit): Cmd { export function cancelFlycheck(ctx: CtxInit): Cmd { return async () => { + await ctx.client.sendNotification(ra.cancelFlycheck); + }; +} + +export function clearFlycheck(ctx: CtxInit): Cmd { + return async () => { + await ctx.client.sendNotification(ra.clearFlycheck); + }; +} + +export function runFlycheck(ctx: CtxInit): Cmd { + return async () => { + const editor = ctx.activeRustEditor; const client = ctx.client; - await client.sendRequest(ra.cancelFlycheck); + const params = editor ? { uri: editor.document.uri.toString() } : null; + + await client.sendNotification(ra.runFlycheck, { textDocument: params }); }; } @@ -797,12 +812,12 @@ export function resolveCodeAction(ctx: CtxInit): Cmd { return async (params: lc.CodeAction) => { const client = ctx.client; params.command = undefined; - const item = await client?.sendRequest(lc.CodeActionResolveRequest.type, params); + const item = await client.sendRequest(lc.CodeActionResolveRequest.type, params); if (!item?.edit) { return; } const itemEdit = item.edit; - const edit = await client?.protocol2CodeConverter.asWorkspaceEdit(itemEdit); + const edit = await client.protocol2CodeConverter.asWorkspaceEdit(itemEdit); // filter out all text edits and recreate the WorkspaceEdit without them so we can apply // snippet edits on our own const lcFileSystemEdit = { diff --git a/src/tools/rust-analyzer/editors/code/src/config.ts b/src/tools/rust-analyzer/editors/code/src/config.ts index d8dbd1df16df..eb4f965291fe 100644 --- a/src/tools/rust-analyzer/editors/code/src/config.ts +++ b/src/tools/rust-analyzer/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); diff --git a/src/tools/rust-analyzer/editors/code/src/diagnostics.ts b/src/tools/rust-analyzer/editors/code/src/diagnostics.ts new file mode 100644 index 000000000000..9695d8bf26d5 --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts b/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts index 875261c48a60..29349cc20f5b 100644 --- a/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts +++ b/src/tools/rust-analyzer/editors/code/src/lsp_ext.ts @@ -79,7 +79,11 @@ export const relatedTests = new lc.RequestType("rust-analyzer/cancelFlycheck"); +export const cancelFlycheck = new lc.NotificationType0("rust-analyzer/cancelFlycheck"); +export const clearFlycheck = new lc.NotificationType0("rust-analyzer/clearFlycheck"); +export const runFlycheck = new lc.NotificationType<{ + textDocument: lc.TextDocumentIdentifier | null; +}>("rust-analyzer/runFlycheck"); // Experimental extensions diff --git a/src/tools/rust-analyzer/editors/code/src/main.ts b/src/tools/rust-analyzer/editors/code/src/main.ts index 25f1e83d109c..dd439317c709 100644 --- a/src/tools/rust-analyzer/editors/code/src/main.ts +++ b/src/tools/rust-analyzer/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, @@ -79,7 +102,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: "", }); }, @@ -150,6 +173,8 @@ function createCommands(): Record { moveItemUp: { enabled: commands.moveItemUp }, moveItemDown: { enabled: commands.moveItemDown }, cancelFlycheck: { enabled: commands.cancelFlycheck }, + clearFlycheck: { enabled: commands.clearFlycheck }, + runFlycheck: { enabled: commands.runFlycheck }, ssr: { enabled: commands.ssr }, serverVersion: { enabled: commands.serverVersion }, // Internal commands which are invoked by the server. diff --git a/src/tools/rust-analyzer/lib/la-arena/src/map.rs b/src/tools/rust-analyzer/lib/la-arena/src/map.rs index 5f347e274500..b9d491da3c0c 100644 --- a/src/tools/rust-analyzer/lib/la-arena/src/map.rs +++ b/src/tools/rust-analyzer/lib/la-arena/src/map.rs @@ -86,6 +86,14 @@ impl ArenaMap, V> { self.v.iter().enumerate().filter_map(|(idx, o)| Some((Self::from_idx(idx), o.as_ref()?))) } + /// Returns an iterator over the arena indexes and values in the map. + pub fn iter_mut(&mut self) -> impl Iterator, &mut V)> { + self.v + .iter_mut() + .enumerate() + .filter_map(|(idx, o)| Some((Self::from_idx(idx), o.as_mut()?))) + } + /// 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); diff --git a/src/tools/rust-analyzer/lib/lsp-server/examples/goto_def.rs b/src/tools/rust-analyzer/lib/lsp-server/examples/goto_def.rs index ca7ad0b53673..2f270afbbf19 100644 --- a/src/tools/rust-analyzer/lib/lsp-server/examples/goto_def.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/lib/lsp-server/src/lib.rs b/src/tools/rust-analyzer/lib/lsp-server/src/lib.rs index d567077d4a4b..beccde40a897 100644 --- a/src/tools/rust-analyzer/lib/lsp-server/src/lib.rs +++ b/src/tools/rust-analyzer/lib/lsp-server/src/lib.rs @@ -114,30 +114,21 @@ 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( 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(); + 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}"))) } }; } @@ -152,21 +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 @@ -221,11 +205,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/src/tools/rust-analyzer/xtask/Cargo.toml b/src/tools/rust-analyzer/xtask/Cargo.toml index 95e27beab5dc..2dd01796c6e4 100644 --- a/src/tools/rust-analyzer/xtask/Cargo.toml +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/xtask/src/dist.rs b/src/tools/rust-analyzer/xtask/src/dist.rs index 686aec4ae507..74715c53eaac 100644 --- a/src/tools/rust-analyzer/xtask/src/dist.rs +++ b/src/tools/rust-analyzer/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}; @@ -26,10 +27,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 +60,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#""#); @@ -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, @@ -130,8 +166,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/src/tools/rust-analyzer/xtask/src/flags.rs b/src/tools/rust-analyzer/xtask/src/flags.rs index 0fce48898349..21004797014e 100644 --- a/src/tools/rust-analyzer/xtask/src/flags.rs +++ b/src/tools/rust-analyzer/xtask/src/flags.rs @@ -34,6 +34,13 @@ xflags::xflags! { cmd dist { optional --client-patch-version version: String } + /// Read a changelog AsciiDoc file and update the GitHub Releases entry in Markdown. + cmd publish-release-notes { + /// Only run conversion and show the result. + optional --dry-run + /// Target changelog file. + required changelog: String + } cmd metrics { optional --dry-run } @@ -59,6 +66,7 @@ pub enum XtaskCmd { Release(Release), Promote(Promote), Dist(Dist), + PublishReleaseNotes(PublishReleaseNotes), Metrics(Metrics), Bb(Bb), } @@ -90,6 +98,13 @@ pub struct Dist { pub client_patch_version: Option, } +#[derive(Debug)] +pub struct PublishReleaseNotes { + pub changelog: String, + + pub dry_run: bool, +} + #[derive(Debug)] pub struct Metrics { pub dry_run: bool, diff --git a/src/tools/rust-analyzer/xtask/src/install.rs b/src/tools/rust-analyzer/xtask/src/install.rs index ae978d5512e7..83223a551d13 100644 --- a/src/tools/rust-analyzer/xtask/src/install.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/xtask/src/main.rs b/src/tools/rust-analyzer/xtask/src/main.rs index a37f469adcb6..6a45033ada3b 100644 --- a/src/tools/rust-analyzer/xtask/src/main.rs +++ b/src/tools/rust-analyzer/xtask/src/main.rs @@ -15,6 +15,7 @@ mod flags; mod install; mod release; mod dist; +mod publish; mod metrics; use anyhow::bail; @@ -36,6 +37,7 @@ fn main() -> anyhow::Result<()> { flags::XtaskCmd::Release(cmd) => cmd.run(sh), flags::XtaskCmd::Promote(cmd) => cmd.run(sh), flags::XtaskCmd::Dist(cmd) => cmd.run(sh), + flags::XtaskCmd::PublishReleaseNotes(cmd) => cmd.run(sh), flags::XtaskCmd::Metrics(cmd) => cmd.run(sh), flags::XtaskCmd::Bb(cmd) => { { diff --git a/src/tools/rust-analyzer/xtask/src/metrics.rs b/src/tools/rust-analyzer/xtask/src/metrics.rs index ebeb873463ea..b6f730dbf126 100644 --- a/src/tools/rust-analyzer/xtask/src/metrics.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/xtask/src/publish.rs b/src/tools/rust-analyzer/xtask/src/publish.rs new file mode 100644 index 000000000000..79b5f3d2f61b --- /dev/null +++ b/src/tools/rust-analyzer/xtask/src/publish.rs @@ -0,0 +1,109 @@ +mod notes; + +use crate::flags; +use anyhow::{anyhow, bail, Result}; +use std::env; +use xshell::{cmd, Shell}; + +impl flags::PublishReleaseNotes { + pub(crate) fn run(self, sh: &Shell) -> Result<()> { + let asciidoc = sh.read_file(&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 { + update_release(sh, tag_name, &markdown)?; + } + Ok(()) + } +} + +fn check_file_name>(path: P) -> Result { + let file_name = path + .as_ref() + .file_name() + .ok_or_else(|| anyhow!("file name is not specified as `changelog`"))? + .to_string_lossy(); + + let mut chars = file_name.chars(); + if file_name.len() >= 10 + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap() == '-' + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap() == '-' + && chars.next().unwrap().is_ascii_digit() + && chars.next().unwrap().is_ascii_digit() + { + Ok(file_name.to_string()) + } else { + 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, + 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 api_version = "X-GitHub-Api-Version: 2022-11-28"; + let release_url = "https://api.github.com/repos/rust-lang/rust-analyzer/releases"; + + let release_json = cmd!( + sh, + "curl -sf -H {accept} -H {authorization} -H {api_version} {release_url}/tags/{tag_name}" + ) + .read()?; + let release_id = cmd!(sh, "jq .id").stdin(release_json).read()?; + + let mut patch = String::new(); + write_json::object(&mut patch) + .string("tag_name", tag_name) + .string("target_commitish", "master") + .string("name", tag_name) + .string("body", release_notes) + .bool("draft", false) + .bool("prerelease", false); + let _ = cmd!( + sh, + "curl -sf -X PATCH -H {accept} -H {authorization} -H {api_version} {release_url}/{release_id} -d {patch}" + ) + .read()?; + + 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); + } +} diff --git a/src/tools/rust-analyzer/xtask/src/publish/notes.rs b/src/tools/rust-analyzer/xtask/src/publish/notes.rs new file mode 100644 index 000000000000..c30267295bf4 --- /dev/null +++ b/src/tools/rust-analyzer/xtask/src/publish/notes.rs @@ -0,0 +1,631 @@ +use anyhow::{anyhow, bail}; +use std::{ + borrow::Cow, + io::{BufRead, Lines}, + iter::Peekable, +}; + +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>, + output: &'b mut String, +} + +impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { + fn new(iter: &'a mut Peekable>, output: &'b mut String) -> Self { + Self { iter, output } + } + + fn process(&mut self) -> anyhow::Result<()> { + self.process_document_header()?; + self.skip_blank_lines()?; + self.output.push('\n'); + + loop { + let line = self.iter.peek().unwrap().as_deref().map_err(|e| anyhow!("{e}"))?; + if get_title(line).is_some() { + let line = self.iter.next().unwrap().unwrap(); + let (level, title) = get_title(&line).unwrap(); + self.write_title(level, title); + } else if get_list_item(line).is_some() { + self.process_list()?; + } else if line.starts_with('[') { + self.process_source_code_block(0)?; + } else if line.starts_with(LISTING_DELIMITER) { + self.process_listing_block(None, 0)?; + } else if line.starts_with('.') { + self.process_block_with_title(0)?; + } else if line.starts_with(IMAGE_BLOCK_PREFIX) { + self.process_image_block(None, 0)?; + } else if line.starts_with(VIDEO_BLOCK_PREFIX) { + self.process_video_block(None, 0)?; + } else { + self.process_paragraph(0, |line| line.is_empty())?; + } + + self.skip_blank_lines()?; + if self.iter.peek().is_none() { + break; + } + self.output.push('\n'); + } + Ok(()) + } + + fn process_document_header(&mut self) -> anyhow::Result<()> { + self.process_document_title()?; + + while let Some(line) = self.iter.next() { + let line = line?; + if line.is_empty() { + break; + } + if !line.starts_with(':') { + self.write_line(&line, 0) + } + } + + Ok(()) + } + + 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); + return Ok(()); + } + } + } + bail!("document title not found") + } + + fn process_list(&mut self) -> anyhow::Result<()> { + let mut nesting = ListNesting::new(); + while let Some(line) = self.iter.peek() { + let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; + + 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); + self.process_paragraph(nesting.indent(), |line| { + line.is_empty() || get_list_item(line).is_some() || line == "+" + })?; + } else if line == "+" { + let _ = self.iter.next().unwrap()?; + let line = self + .iter + .peek() + .ok_or_else(|| anyhow!("list continuation unexpectedly terminated"))?; + let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; + + let indent = nesting.indent(); + if line.starts_with('[') { + self.write_line("", 0); + self.process_source_code_block(indent)?; + } else if line.starts_with(LISTING_DELIMITER) { + self.write_line("", 0); + self.process_listing_block(None, indent)?; + } else if line.starts_with('.') { + self.write_line("", 0); + self.process_block_with_title(indent)?; + } else if line.starts_with(IMAGE_BLOCK_PREFIX) { + self.write_line("", 0); + self.process_image_block(None, indent)?; + } else if line.starts_with(VIDEO_BLOCK_PREFIX) { + self.write_line("", 0); + self.process_video_block(None, indent)?; + } else { + self.write_line("", 0); + let current = nesting.current().unwrap(); + self.process_paragraph(indent, |line| { + line.is_empty() + || get_list_item(line).filter(|(m, _)| m == current).is_some() + || line == "+" + })?; + } + } else { + break; + } + self.skip_blank_lines()?; + } + + Ok(()) + } + + fn process_source_code_block(&mut self, level: usize) -> anyhow::Result<()> { + if let Some(Ok(line)) = self.iter.next() { + if let Some(styles) = line.strip_prefix("[source").and_then(|s| s.strip_suffix(']')) { + let mut styles = styles.split(','); + if !styles.next().unwrap().is_empty() { + bail!("not a source code block"); + } + let language = styles.next(); + return self.process_listing_block(language, level); + } + } + bail!("not a source code block") + } + + fn process_listing_block(&mut self, style: Option<&str>, level: usize) -> anyhow::Result<()> { + if let Some(Ok(line)) = self.iter.next() { + if line == LISTING_DELIMITER { + self.write_indent(level); + self.output.push_str("```"); + if let Some(style) = style { + self.output.push_str(style); + } + self.output.push('\n'); + while let Some(line) = self.iter.next() { + let line = line?; + if line == LISTING_DELIMITER { + self.write_line("```", level); + return Ok(()); + } else { + self.write_line(&line, level); + } + } + bail!("listing block is not terminated") + } + } + bail!("not a listing block") + } + + fn process_block_with_title(&mut self, level: usize) -> anyhow::Result<()> { + if let Some(Ok(line)) = self.iter.next() { + let title = + line.strip_prefix('.').ok_or_else(|| anyhow!("extraction of the title failed"))?; + + let line = self + .iter + .peek() + .ok_or_else(|| anyhow!("target block for the title is not found"))?; + let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; + if line.starts_with(IMAGE_BLOCK_PREFIX) { + return self.process_image_block(Some(title), level); + } else if line.starts_with(VIDEO_BLOCK_PREFIX) { + return self.process_video_block(Some(title), level); + } else { + bail!("title for that block type is not supported"); + } + } + bail!("not a title") + } + + fn process_image_block(&mut self, caption: Option<&str>, level: usize) -> anyhow::Result<()> { + if let Some(Ok(line)) = self.iter.next() { + if let Some((url, attrs)) = parse_media_block(&line, IMAGE_BLOCK_PREFIX) { + let alt = if let Some(stripped) = + attrs.strip_prefix('"').and_then(|s| s.strip_suffix('"')) + { + stripped + } else { + attrs + }; + if let Some(caption) = caption { + self.write_caption_line(caption, level); + } + self.write_indent(level); + self.output.push_str("!["); + self.output.push_str(alt); + self.output.push_str("]("); + self.output.push_str(url); + self.output.push_str(")\n"); + return Ok(()); + } + } + bail!("not a image block") + } + + fn process_video_block(&mut self, caption: Option<&str>, level: usize) -> anyhow::Result<()> { + if let Some(Ok(line)) = self.iter.next() { + if let Some((url, attrs)) = parse_media_block(&line, VIDEO_BLOCK_PREFIX) { + let html_attrs = match attrs { + "options=loop" => "controls loop", + r#"options="autoplay,loop""# => "autoplay controls loop", + _ => bail!("unsupported video syntax"), + }; + if let Some(caption) = caption { + self.write_caption_line(caption, level); + } + self.write_indent(level); + self.output.push_str(r#"\n"); + return Ok(()); + } + } + bail!("not a video block") + } + + fn process_paragraph

(&mut self, level: usize, predicate: P) -> anyhow::Result<()> + where + P: Fn(&str) -> bool, + { + while let Some(line) = self.iter.peek() { + let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; + 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 let Some(stripped) = line.strip_suffix('+') { + self.output.push_str(stripped); + self.output.push('\\'); + } else { + self.output.push_str(&line); + } + self.output.push('\n'); + } + + Ok(()) + } + + fn skip_blank_lines(&mut self) -> anyhow::Result<()> { + while let Some(line) = self.iter.peek() { + if !line.as_deref().unwrap().is_empty() { + break; + } + self.iter.next().unwrap()?; + } + Ok(()) + } + + fn write_title(&mut self, indent: usize, title: &str) { + for _ in 0..indent { + self.output.push('#'); + } + self.output.push(' '); + self.output.push_str(title); + self.output.push('\n'); + } + + fn write_list_item(&mut self, item: &str, nesting: &ListNesting) { + let (marker, indent) = nesting.marker(); + self.write_indent(indent); + self.output.push_str(marker); + self.output.push_str(item); + self.output.push('\n'); + } + + fn write_caption_line(&mut self, caption: &str, indent: usize) { + self.write_indent(indent); + self.output.push('_'); + self.output.push_str(caption); + self.output.push_str("_\\\n"); + } + + fn write_indent(&mut self, indent: usize) { + for _ in 0..indent { + self.output.push(' '); + } + } + + fn write_line(&mut self, line: &str, indent: usize) { + self.write_indent(indent); + self.output.push_str(line); + self.output.push('\n'); + } +} + +pub(crate) fn convert_asciidoc_to_markdown(input: R) -> anyhow::Result +where + R: BufRead, +{ + let mut output = String::new(); + let mut iter = input.lines().peekable(); + + let mut converter = Converter::new(&mut iter, &mut output); + converter.process()?; + + Ok(output) +} + +fn get_title(line: &str) -> Option<(usize, &str)> { + strip_prefix_symbol(line, '=') +} + +fn get_list_item(line: &str) -> Option<(ListMarker, &str)> { + 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)) + } else if let Some((count, text)) = strip_prefix_symbol(line, '.') { + Some((ListMarker::Dot(count), text)) + } else { + None + } +} + +fn strip_prefix_symbol(line: &str, symbol: char) -> Option<(usize, &str)> { + let mut iter = line.chars(); + if iter.next()? != symbol { + return None; + } + let mut count = 1; + loop { + match iter.next() { + Some(ch) if ch == symbol => { + count += 1; + } + Some(' ') => { + break; + } + _ => return None, + } + } + Some((count, iter.as_str())) +} + +fn parse_media_block<'a>(line: &'a str, prefix: &str) -> Option<(&'a str, &'a str)> { + if let Some(line) = line.strip_prefix(prefix) { + if let Some((url, rest)) = line.split_once('[') { + if let Some(attrs) = rest.strip_suffix(']') { + return Some((url, attrs)); + } + } + } + None +} + +#[derive(Debug)] +struct ListNesting(Vec); + +impl ListNesting { + fn new() -> Self { + Self(Vec::::with_capacity(6)) + } + + fn current(&mut self) -> Option<&ListMarker> { + self.0.last() + } + + fn set_current(&mut self, marker: ListMarker) { + let Self(markers) = self; + if let Some(index) = markers.iter().position(|m| *m == marker) { + markers.truncate(index + 1); + } else { + markers.push(marker); + } + } + + fn indent(&self) -> usize { + self.0.iter().map(|m| m.in_markdown().len()).sum() + } + + fn marker(&self) -> (&str, usize) { + let Self(markers) = self; + let indent = markers.iter().take(markers.len() - 1).map(|m| m.in_markdown().len()).sum(); + let marker = match markers.last() { + None => "", + Some(marker) => marker.in_markdown(), + }; + (marker, indent) + } +} + +#[derive(Debug, PartialEq, Eq)] +enum ListMarker { + Asterisk(usize), + Hyphen, + Dot(usize), +} + +impl ListMarker { + fn in_markdown(&self) -> &str { + match self { + ListMarker::Asterisk(_) => "- ", + ListMarker::Hyphen => "- ", + ListMarker::Dot(_) => "1. ", + } + } +} + +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::*; + use std::fs::read_to_string; + + #[test] + fn test_asciidoc_to_markdown_conversion() { + 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); + } + + 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" + ), + } +} diff --git a/src/tools/rust-analyzer/xtask/src/release.rs b/src/tools/rust-analyzer/xtask/src/release.rs index eda8fceef05b..4a3069147785 100644 --- a/src/tools/rust-analyzer/xtask/src/release.rs +++ b/src/tools/rust-analyzer/xtask/src/release.rs @@ -64,8 +64,8 @@ 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)); - sh.write_file(&path, &contents)?; + let path = changelog_dir.join(format!("{today}-changelog-{changelog_n}.adoc")); + sh.write_file(path, contents)?; Ok(()) } diff --git a/src/tools/rust-analyzer/xtask/src/release/changelog.rs b/src/tools/rust-analyzer/xtask/src/release/changelog.rs index 2647f7794f2c..d2a1483e3873 100644 --- a/src/tools/rust-analyzer/xtask/src/release/changelog.rs +++ b/src/tools/rust-analyzer/xtask/src/release/changelog.rs @@ -23,9 +23,9 @@ 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 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,36 +57,36 @@ 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(); } } 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) } @@ -112,11 +112,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 { diff --git a/src/tools/rust-analyzer/xtask/test_data/expected.md b/src/tools/rust-analyzer/xtask/test_data/expected.md new file mode 100644 index 000000000000..19c940c67bdc --- /dev/null +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/xtask/test_data/input.adoc b/src/tools/rust-analyzer/xtask/test_data/input.adoc new file mode 100644 index 000000000000..105bd8df0db7 --- /dev/null +++ b/src/tools/rust-analyzer/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. +---- diff --git a/src/tools/rustdoc-gui/tester.js b/src/tools/rustdoc-gui/tester.js index 900ca3894362..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(""); } }; @@ -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. 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/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/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/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 8d70335a9e7b..bc9fd35ecde3 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,16 +24,15 @@ 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] = &["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] = &[ - "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)*) => { @@ -193,6 +192,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); @@ -268,14 +268,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/lib.rs b/src/tools/tidy/src/lib.rs index 15c641d748c8..40375f1306d6 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -64,8 +64,8 @@ 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; pub mod walk; -pub mod x_version; diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index a5685ba7c942..ea2886a3c2f8 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"); @@ -59,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); } @@ -68,16 +69,17 @@ 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!(tests_placement, &root_path); + 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 +90,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,24 +99,32 @@ 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); - check!(x_version, &root_path, &cargo); - let collected = { 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 723a52c4c680..6a0855405ec9 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", @@ -65,6 +68,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)] @@ -133,6 +138,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), } } @@ -242,7 +249,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") }); @@ -275,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"); @@ -320,9 +331,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!( @@ -400,6 +412,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 = |_| { 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/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() + ) + } +} 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/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/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 95% rename from src/test/assembly/target-feature-multiple.rs rename to tests/assembly/target-feature-multiple.rs index 18d896e86b21..5c5d93863d71 100644 --- a/src/test/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/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 96% rename from src/test/codegen/abi-efiapi.rs rename to tests/codegen/abi-efiapi.rs index 9061d7432a3f..9502ebf59af7 100644 --- a/src/test/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/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 94% rename from src/test/codegen/match-optimized.rs rename to tests/codegen/match-optimized.rs index 36402cc7353f..520c46a0d570 100644 --- a/src/test/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/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 91% rename from src/test/codegen/match-unoptimized.rs rename to tests/codegen/match-unoptimized.rs index be40b29e3d3e..78ea4f9b4094 100644 --- a/src/test/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/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/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) +} 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 95% rename from src/test/codegen/target-feature-overrides.rs rename to tests/codegen/target-feature-overrides.rs index 4be77e36e760..1bebf66f0df4 100644 --- a/src/test/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/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/tests/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir b/tests/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir new file mode 100644 index 000000000000..d7f66a6bf4d5 --- /dev/null +++ b/tests/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/tests/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir b/tests/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir new file mode 100644 index 000000000000..7b7ab1978258 --- /dev/null +++ b/tests/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/tests/mir-opt/div_overflow.rs b/tests/mir-opt/div_overflow.rs new file mode 100644 index 000000000000..10ce5bc0f4f0 --- /dev/null +++ b/tests/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); +} 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 88% rename from src/test/mir-opt/remove_never_const.rs rename to tests/mir-opt/remove_never_const.rs index 16095cfdd7dc..160cc955534c 100644 --- a/src/test/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/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 97% rename from src/test/pretty/block-comment-wchar.pp rename to tests/pretty/block-comment-wchar.pp index 8c8580b07c21..9d64fb4156ca 100644 --- a/src/test/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/src/test/pretty/block-comment-wchar.rs b/tests/pretty/block-comment-wchar.rs similarity index 97% rename from src/test/pretty/block-comment-wchar.rs rename to tests/pretty/block-comment-wchar.rs index e0606e49752c..c042ea685900 100644 --- a/src/test/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/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/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile b/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile new file mode 100644 index 000000000000..87f74c69c793 --- /dev/null +++ b/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile @@ -0,0 +1,4 @@ +include ../tools.mk + +all: + $(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 new file mode 100644 index 000000000000..9824b17e6c2a --- /dev/null +++ b/tests/run-make-fulldeps/alloc-no-rc/Makefile @@ -0,0 +1,4 @@ +include ../tools.mk + +all: + $(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 new file mode 100644 index 000000000000..04ec4c7d8bc9 --- /dev/null +++ b/tests/run-make-fulldeps/alloc-no-sync/Makefile @@ -0,0 +1,4 @@ +include ../tools.mk + +all: + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/alloc/src/lib.rs --cfg no_sync 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/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile b/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile new file mode 100644 index 000000000000..837664d92b93 --- /dev/null +++ b/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile @@ -0,0 +1,4 @@ +include ../tools.mk + +all: + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/core/src/lib.rs --cfg no_fp_fmt_parse 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 91% rename from src/test/run-make-fulldeps/obtain-borrowck/Makefile rename to tests/run-make-fulldeps/obtain-borrowck/Makefile index 223993125c80..212d0f67d006 100644 --- a/src/test/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/src/test/run-make-fulldeps/obtain-borrowck/driver.rs b/tests/run-make-fulldeps/obtain-borrowck/driver.rs similarity index 98% rename from src/test/run-make-fulldeps/obtain-borrowck/driver.rs rename to tests/run-make-fulldeps/obtain-borrowck/driver.rs index a6c60df83a63..9cd504f004de 100644 --- a/src/test/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(); 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/tests/run-make/coverage/compiletest-ignore-dir b/tests/run-make/coverage/compiletest-ignore-dir new file mode 100644 index 000000000000..470ff996098b --- /dev/null +++ b/tests/run-make/coverage/compiletest-ignore-dir @@ -0,0 +1,3 @@ +# Directory "coverage" supports the tests at prefix ../coverage-* + +# Use ./x.py [options] test tests/run-make/coverage to run all related tests. 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 93% rename from src/test/run-make/repr128-dwarf/Makefile rename to tests/run-make/repr128-dwarf/Makefile index a840e3ee6d80..2b03c22c0d0d 100644 --- a/src/test/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/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 84% rename from src/test/run-make/static-pie/Makefile rename to tests/run-make/static-pie/Makefile index e71770636ee1..f4e6adf1b183 100644 --- a/src/test/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/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 93% rename from src/test/run-make/thumb-none-cortex-m/Makefile rename to tests/run-make/thumb-none-cortex-m/Makefile index aa046af95da8..3065141c08a3 100644 --- a/src/test/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/src/test/run-make/thumb-none-qemu/Makefile b/tests/run-make/thumb-none-qemu/Makefile similarity index 89% rename from src/test/run-make/thumb-none-qemu/Makefile rename to tests/run-make/thumb-none-qemu/Makefile index 328758d41ba6..a1c2ba12cd06 100644 --- a/src/test/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/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 81% rename from src/test/rustdoc-gui/README.md rename to tests/rustdoc-gui/README.md index d9854e2e7154..1126a72ab67e 100644 --- a/src/test/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/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 51% rename from src/test/rustdoc-gui/src/lib2/lib.rs rename to tests/rustdoc-gui/src/lib2/lib.rs index 24aecc70d65e..34e67d9d2543 100644 --- a/src/test/rustdoc-gui/src/lib2/lib.rs +++ b/tests/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/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 82% rename from src/test/rustdoc-gui/type-declation-overflow.goml rename to tests/rustdoc-gui/type-declation-overflow.goml index 9b60bc04738b..644429c014c1 100644 --- a/src/test/rustdoc-gui/type-declation-overflow.goml +++ b/tests/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}) 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 91% rename from src/test/rustdoc-ui/cfg-test.rs rename to tests/rustdoc-ui/cfg-test.rs index d4ca92585871..d40b92837355 100644 --- a/src/test/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/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 74% rename from src/test/rustdoc-ui/check-cfg-test.rs rename to tests/rustdoc-ui/check-cfg-test.rs index 626cc838704b..920432276cba 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/basic.stdout rename to tests/rustdoc-ui/coverage/basic.stdout index 3c602b3da4c7..545662f0f3d1 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/empty.stdout rename to tests/rustdoc-ui/coverage/empty.stdout index 890a7d56e162..d486825287b1 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/enums.stdout rename to tests/rustdoc-ui/coverage/enums.stdout index 64c012c1f66e..bb224aac8c0b 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/exotic.stdout rename to tests/rustdoc-ui/coverage/exotic.stdout index 27798b813101..bd894898cc45 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/private.stdout rename to tests/rustdoc-ui/coverage/private.stdout index 37a0f5187b51..b9981c7c50aa 100644 --- a/src/test/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/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 90% rename from src/test/rustdoc-ui/coverage/traits.stdout rename to tests/rustdoc-ui/coverage/traits.stdout index 5053d02090c4..0c7857cf29ce 100644 --- a/src/test/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/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 85% rename from src/test/rustdoc-ui/display-output.rs rename to tests/rustdoc-ui/display-output.rs index ec27a9f6ba31..23bc54e3cde1 100644 --- a/src/test/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/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 81% rename from src/test/rustdoc-ui/doc-comment-multi-line-attr.rs rename to tests/rustdoc-ui/doc-comment-multi-line-attr.rs index 97259f782bdd..db674e229fc0 100644 --- a/src/test/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/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 80% 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 index b2a8133c90e1..6ce3cb9fc070 100644 --- a/src/test/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/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 82% rename from src/test/rustdoc-ui/doc-test-doctest-feature.rs rename to tests/rustdoc-ui/doc-test-doctest-feature.rs index 0b79aaece8a0..88cf44e643be 100644 --- a/src/test/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/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 84% rename from src/test/rustdoc-ui/doc-test-rustdoc-feature.rs rename to tests/rustdoc-ui/doc-test-rustdoc-feature.rs index bf334c67ecab..dc72a4857645 100644 --- a/src/test/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/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 82% rename from src/test/rustdoc-ui/doctest-multiline-crate-attribute.rs rename to tests/rustdoc-ui/doctest-multiline-crate-attribute.rs index a30472ac56b2..260f5a7a64f5 100644 --- a/src/test/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/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 88% rename from src/test/rustdoc-ui/doctest-output.rs rename to tests/rustdoc-ui/doctest-output.rs index 2670fa572010..303f76896981 100644 --- a/src/test/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/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 85% rename from src/test/rustdoc-ui/failed-doctest-compile-fail.rs rename to tests/rustdoc-ui/failed-doctest-compile-fail.rs index 6f2ff5d703a1..4dfca600f162 100644 --- a/src/test/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/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 88% 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 index 16d737106ea8..03a5b9d5d842 100644 --- a/src/test/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/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 85% rename from src/test/rustdoc-ui/failed-doctest-missing-codes.rs rename to tests/rustdoc-ui/failed-doctest-missing-codes.rs index 57b70b478e62..66a229a0c757 100644 --- a/src/test/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/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 92% rename from src/test/rustdoc-ui/failed-doctest-output-windows.rs rename to tests/rustdoc-ui/failed-doctest-output-windows.rs index 4cd9993d8d5b..456a9e68f20c 100644 --- a/src/test/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/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 92% rename from src/test/rustdoc-ui/failed-doctest-output.rs rename to tests/rustdoc-ui/failed-doctest-output.rs index 42de954d052b..77647f8eca95 100644 --- a/src/test/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/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 85% rename from src/test/rustdoc-ui/failed-doctest-should-panic.rs rename to tests/rustdoc-ui/failed-doctest-should-panic.rs index 2b8bb31686f2..c134f80064d5 100644 --- a/src/test/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/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 79% rename from src/test/rustdoc-ui/issue-80992.rs rename to tests/rustdoc-ui/issue-80992.rs index 8983439bb64d..80ff225b8791 100644 --- a/src/test/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/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 82% rename from src/test/rustdoc-ui/issue-81662-shortness.rs rename to tests/rustdoc-ui/issue-81662-shortness.rs index 27a21a313bc5..8a90813b31d5 100644 --- a/src/test/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/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 86% rename from src/test/rustdoc-ui/issue-91134.rs rename to tests/rustdoc-ui/issue-91134.rs index d2ff3a252266..42703ee4d799 100644 --- a/src/test/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/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 92% rename from src/test/rustdoc-ui/no-run-flag.rs rename to tests/rustdoc-ui/no-run-flag.rs index da1672c4a6e7..181730eb4161 100644 --- a/src/test/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/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 65% rename from src/test/rustdoc-ui/nocapture-fail.rs rename to tests/rustdoc-ui/nocapture-fail.rs index 7706bd1f3e39..9a3fb592c630 100644 --- a/src/test/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/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 79% rename from src/test/rustdoc-ui/nocapture.rs rename to tests/rustdoc-ui/nocapture.rs index 321f5ca08ede..3eb38f2fb3b8 100644 --- a/src/test/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/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 91% rename from src/test/rustdoc-ui/run-directory.rs rename to tests/rustdoc-ui/run-directory.rs index 0d432c1e6996..bbceaaf824f9 100644 --- a/src/test/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/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 76% rename from src/test/rustdoc-ui/test-no_std.rs rename to tests/rustdoc-ui/test-no_std.rs index ee919985e7a9..51abf1c72176 100644 --- a/src/test/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/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 88% rename from src/test/rustdoc-ui/test-type.rs rename to tests/rustdoc-ui/test-type.rs index 882da5c2503f..7f5a8f3fc415 100644 --- a/src/test/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/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 79% rename from src/test/rustdoc-ui/unparseable-doc-test.rs rename to tests/rustdoc-ui/unparseable-doc-test.rs index 0cff8cd9a33a..f0a56a91bf54 100644 --- a/src/test/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/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 99% rename from src/test/rustdoc-ui/z-help.stdout rename to tests/rustdoc-ui/z-help.stdout index 537dc92be192..43f30f3d6e80 100644 --- a/src/test/rustdoc-ui/z-help.stdout +++ b/tests/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`. 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/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() -> !; +} 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/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; 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 99% rename from src/test/ui-fulldeps/pprust-expr-roundtrip.rs rename to tests/ui-fulldeps/pprust-expr-roundtrip.rs index 6dbabc8eb348..7a91dcf0dad3 100644 --- a/src/test/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(), 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 99% rename from src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs rename to tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs index c19b639a8d58..65d9601e78ab 100644 --- a/src/test/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/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr similarity index 95% rename from src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr rename to tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr index f39d32a221ca..13e806a434f6 100644 --- a/src/test/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`. 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 98% rename from src/test/ui/abi/homogenous-floats-target-feature-mixup.rs rename to tests/ui/abi/homogenous-floats-target-feature-mixup.rs index d7f5e19219ed..4600bd090cc6 100644 --- a/src/test/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/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 83% 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 index a85edd7a08da..749986f09c63 100644 --- a/src/test/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/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 86% rename from src/test/ui/associated-types/impl-wf-cycle-1.stderr rename to tests/ui/associated-types/impl-wf-cycle-1.stderr index 6661347e4f86..206060f1980d 100644 --- a/src/test/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/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 83% rename from src/test/ui/associated-types/impl-wf-cycle-2.stderr rename to tests/ui/associated-types/impl-wf-cycle-2.stderr index ec4ffe27c5fd..771ba751e8c9 100644 --- a/src/test/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/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 84% rename from src/test/ui/associated-types/issue-44153.stderr rename to tests/ui/associated-types/issue-44153.stderr index 9c92f19d8bf9..8bddcd955689 100644 --- a/src/test/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/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 90% rename from src/test/ui/associated-types/issue-65774-1.stderr rename to tests/ui/associated-types/issue-65774-1.stderr index 3b294d65d56e..91b557555d58 100644 --- a/src/test/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/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 88% rename from src/test/ui/associated-types/substs-ppaux.normal.stderr rename to tests/ui/associated-types/substs-ppaux.normal.stderr index 3f180cf4f1f8..acdc3be8c676 100644 --- a/src/test/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 @@ -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/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 88% rename from src/test/ui/associated-types/substs-ppaux.verbose.stderr rename to tests/ui/associated-types/substs-ppaux.verbose.stderr index 16dd29de2c54..e4f6ba573ca4 100644 --- a/src/test/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 @@ -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/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/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs b/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs new file mode 100644 index 000000000000..f2f87a908178 --- /dev/null +++ b/tests/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/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr b/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr new file mode 100644 index 000000000000..e65d9d0e5d35 --- /dev/null +++ b/tests/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/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 82% rename from src/test/ui/async-await/in-trait/nested-rpit.rs rename to tests/ui/async-await/in-trait/nested-rpit.rs index ae8e0aed0cc5..41d72ebb4d4c 100644 --- a/src/test/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)] 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 75% 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 index ce7095664c11..bd7aaf6fb6df 100644 --- a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr +++ b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr @@ -4,17 +4,23 @@ 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 | 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 | 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/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 87% rename from src/test/ui/block-result/issue-22645.stderr rename to tests/ui/block-result/issue-22645.stderr index 28debd60a998..24341c0f58a8 100644 --- a/src/test/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/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 96% 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 index 087743e505d2..fce6210b2f43 100644 --- 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 @@ -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/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 85% 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 index 007d7d7953c9..5b97b396fb12 100644 --- 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 @@ -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/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 81% rename from src/test/ui/c-variadic/issue-86053-1.rs rename to tests/ui/c-variadic/issue-86053-1.rs index b30548e19f9f..49d5c0390bc1 100644 --- a/src/test/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/src/test/ui/c-variadic/issue-86053-1.stderr b/tests/ui/c-variadic/issue-86053-1.stderr similarity index 77% rename from src/test/ui/c-variadic/issue-86053-1.stderr rename to tests/ui/c-variadic/issue-86053-1.stderr index d1f13d52362d..5a02f4aa93a9 100644 --- a/src/test/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/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 95% rename from src/test/ui/c-variadic/variadic-ffi-2.rs rename to tests/ui/c-variadic/variadic-ffi-2.rs index 96cea87546e7..c34b7e55f6ae 100644 --- a/src/test/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/src/test/ui/c-variadic/variadic-ffi-2.stderr b/tests/ui/c-variadic/variadic-ffi-2.stderr similarity index 92% rename from src/test/ui/c-variadic/variadic-ffi-2.stderr rename to tests/ui/c-variadic/variadic-ffi-2.stderr index 4e74c9d92278..e21001ecaf8b 100644 --- a/src/test/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/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 95% 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 index 6787527027e3..067c620f5fe8 100644 --- 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 @@ -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/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/tests/ui/chalkify/bugs/async.rs b/tests/ui/chalkify/bugs/async.rs new file mode 100644 index 000000000000..86ce42631b43 --- /dev/null +++ b/tests/ui/chalkify/bugs/async.rs @@ -0,0 +1,16 @@ +// check-fail +// 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() -> () {} + +async fn foo(x: u32) -> u32 { + x +} diff --git a/tests/ui/chalkify/bugs/async.stderr b/tests/ui/chalkify/bugs/async.stderr new file mode 100644 index 000000000000..7e2466dece43 --- /dev/null +++ b/tests/ui/chalkify/bugs/async.stderr @@ -0,0 +1,40 @@ +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: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 { + +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`. 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 97% rename from src/test/ui/check-static-values-constraints.stderr rename to tests/ui/check-static-values-constraints.stderr index b13700a4ea5b..49056678448e 100644 --- a/src/test/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/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/tests/ui/const-generics/ensure_is_evaluatable.rs b/tests/ui/const-generics/ensure_is_evaluatable.rs new file mode 100644 index 000000000000..1e8d8c3d3559 --- /dev/null +++ b/tests/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/tests/ui/const-generics/ensure_is_evaluatable.stderr b/tests/ui/const-generics/ensure_is_evaluatable.stderr new file mode 100644 index 000000000000..bf6c35ad8fd8 --- /dev/null +++ b/tests/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 + 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/tests/ui/const-generics/fn_with_two_const_inputs.rs b/tests/ui/const-generics/fn_with_two_const_inputs.rs new file mode 100644 index 000000000000..0d6246a9f02c --- /dev/null +++ b/tests/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/tests/ui/const-generics/fn_with_two_const_inputs.stderr b/tests/ui/const-generics/fn_with_two_const_inputs.stderr new file mode 100644 index 000000000000..614e7e0d2fc2 --- /dev/null +++ b/tests/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/tests/ui/const-generics/fn_with_two_same_const_inputs.rs b/tests/ui/const-generics/fn_with_two_same_const_inputs.rs new file mode 100644 index 000000000000..f0ce093e07a4 --- /dev/null +++ b/tests/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/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 74% 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 index c3e2f8e1646f..eb4ff8305dac 100644 --- a/src/test/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/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 50% 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 index 0af5493f8167..ea6f5f692765 100644 --- 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 @@ -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/src/test/ui/const-generics/generic_const_exprs/issue-72787.rs b/tests/ui/const-generics/generic_const_exprs/issue-72787.rs similarity index 92% 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 index c651bf1c8de9..657fec2e9cb7 100644 --- a/src/test/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/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 87% 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 index a08c9912527c..6aa8ee13b790 100644 --- a/src/test/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/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 82% 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 index 09bcb0860b71..e50ac671eca5 100644 --- a/src/test/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/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 83% rename from src/test/ui/const-generics/issue-93647.stderr rename to tests/ui/const-generics/issue-93647.stderr index e2048ecd60f6..18370eea5714 100644 --- a/src/test/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/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/tests/ui/const-generics/issues/issue-105037.rs b/tests/ui/const-generics/issues/issue-105037.rs new file mode 100644 index 000000000000..f7d239499439 --- /dev/null +++ b/tests/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() {} 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/tests/ui/const-generics/two_matching_preds.rs b/tests/ui/const-generics/two_matching_preds.rs new file mode 100644 index 000000000000..de608f73e2c0 --- /dev/null +++ b/tests/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/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/tests/ui/const-generics/unify_with_nested_expr.rs b/tests/ui/const-generics/unify_with_nested_expr.rs new file mode 100644 index 000000000000..1271e0902a3b --- /dev/null +++ b/tests/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/tests/ui/const-generics/unify_with_nested_expr.stderr b/tests/ui/const-generics/unify_with_nested_expr.stderr new file mode 100644 index 000000000000..8bab0dff7f26 --- /dev/null +++ b/tests/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`. 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 88% rename from src/test/ui/const-ptr/forbidden_slices.rs rename to tests/ui/const-ptr/forbidden_slices.rs index cc6100226dc1..192b6a46de60 100644 --- a/src/test/ui/const-ptr/forbidden_slices.rs +++ b/tests/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/tests/ui/const-ptr/forbidden_slices.stderr similarity index 84% rename from src/test/ui/const-ptr/forbidden_slices.32bit.stderr rename to tests/ui/const-ptr/forbidden_slices.stderr index 0079bb3aad6d..b42361872c47 100644 --- a/src/test/ui/const-ptr/forbidden_slices.32bit.stderr +++ b/tests/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/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 92% rename from src/test/ui/consts/const-blocks/trait-error.stderr rename to tests/ui/consts/const-blocks/trait-error.stderr index b11dd4b80872..06fa4b0b1f30 100644 --- a/src/test/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/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/tests/ui/consts/const-eval/raw-bytes.32bit.stderr b/tests/ui/consts/const-eval/raw-bytes.32bit.stderr new file mode 100644 index 000000000000..91a426580c3c --- /dev/null +++ b/tests/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/tests/ui/consts/const-eval/raw-bytes.64bit.stderr b/tests/ui/consts/const-eval/raw-bytes.64bit.stderr new file mode 100644 index 000000000000..e4c5e62f6bd3 --- /dev/null +++ b/tests/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/tests/ui/consts/const-eval/raw-bytes.rs b/tests/ui/consts/const-eval/raw-bytes.rs new file mode 100644 index 000000000000..6c1238c0a063 --- /dev/null +++ b/tests/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/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 86% rename from src/test/ui/consts/const-eval/ub-enum.32bit.stderr rename to tests/ui/consts/const-eval/ub-enum.32bit.stderr index 93bc96e67674..2d86bd88f1c8 100644 --- a/src/test/ui/consts/const-eval/ub-enum.32bit.stderr +++ b/tests/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/tests/ui/consts/const-eval/ub-enum.64bit.stderr similarity index 86% rename from src/test/ui/consts/const-eval/ub-enum.64bit.stderr rename to tests/ui/consts/const-eval/ub-enum.64bit.stderr index 280ba25a83ca..a89d7ec5f6d4 100644 --- a/src/test/ui/consts/const-eval/ub-enum.64bit.stderr +++ b/tests/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/tests/ui/consts/const-eval/ub-enum.rs similarity index 90% rename from src/test/ui/consts/const-eval/ub-enum.rs rename to tests/ui/consts/const-eval/ub-enum.rs index 6935be2f92fe..8f26d9a00d71 100644 --- a/src/test/ui/consts/const-eval/ub-enum.rs +++ b/tests/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-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 86% rename from src/test/ui/consts/const-eval/ub-nonnull.rs rename to tests/ui/consts/const-eval/ub-nonnull.rs index 49092582267c..a64b3a74cf6c 100644 --- a/src/test/ui/consts/const-eval/ub-nonnull.rs +++ b/tests/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/tests/ui/consts/const-eval/ub-nonnull.stderr similarity index 77% rename from src/test/ui/consts/const-eval/ub-nonnull.32bit.stderr rename to tests/ui/consts/const-eval/ub-nonnull.stderr index b24e0cc37aa6..961648708045 100644 --- a/src/test/ui/consts/const-eval/ub-nonnull.32bit.stderr +++ b/tests/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.rs b/tests/ui/consts/const-eval/ub-ref-ptr.rs similarity index 88% rename from src/test/ui/consts/const-eval/ub-ref-ptr.rs rename to tests/ui/consts/const-eval/ub-ref-ptr.rs index b0fc3c196a49..369e4519407f 100644 --- a/src/test/ui/consts/const-eval/ub-ref-ptr.rs +++ b/tests/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/tests/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 tests/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/tests/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.rs b/tests/ui/consts/const-eval/ub-uninhabit.rs similarity index 61% rename from src/test/ui/consts/const-eval/ub-uninhabit.rs rename to tests/ui/consts/const-eval/ub-uninhabit.rs index 213f15b79174..4c4ef216d862 100644 --- a/src/test/ui/consts/const-eval/ub-uninhabit.rs +++ b/tests/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/tests/ui/consts/const-eval/ub-uninhabit.stderr similarity index 80% rename from src/test/ui/consts/const-eval/ub-uninhabit.32bit.stderr rename to tests/ui/consts/const-eval/ub-uninhabit.stderr index 7d3232257416..0ae376d03fc3 100644 --- a/src/test/ui/consts/const-eval/ub-uninhabit.32bit.stderr +++ b/tests/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-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 95% rename from src/test/ui/consts/const-eval/ub-wide-ptr.rs rename to tests/ui/consts/const-eval/ub-wide-ptr.rs index d12e5e2bed93..a765dc71273d 100644 --- a/src/test/ui/consts/const-eval/ub-wide-ptr.rs +++ b/tests/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/tests/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 tests/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/tests/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/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 90% rename from src/test/ui/consts/const-fn-error.stderr rename to tests/ui/consts/const-fn-error.stderr index f6b532fb6586..f735b3d53ce4 100644 --- a/src/test/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/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 82% rename from src/test/ui/consts/const-for.stderr rename to tests/ui/consts/const-for.stderr index 294ea627d854..3fb9787c0d86 100644 --- a/src/test/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/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 86% rename from src/test/ui/consts/const-match-check.eval1.stderr rename to tests/ui/consts/const-match-check.eval1.stderr index 6e61dbbd8eee..1caf1617e213 100644 --- a/src/test/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/src/test/ui/consts/const-match-check.eval2.stderr b/tests/ui/consts/const-match-check.eval2.stderr similarity index 87% rename from src/test/ui/consts/const-match-check.eval2.stderr rename to tests/ui/consts/const-match-check.eval2.stderr index 1b3b6e06c3df..f038ba1c8ed8 100644 --- a/src/test/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/src/test/ui/consts/const-match-check.matchck.stderr b/tests/ui/consts/const-match-check.matchck.stderr similarity index 86% rename from src/test/ui/consts/const-match-check.matchck.stderr rename to tests/ui/consts/const-match-check.matchck.stderr index bc8edfa7af9f..b1921f8a41e4 100644 --- a/src/test/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/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/tests/ui/consts/const-pattern-irrefutable.rs b/tests/ui/consts/const-pattern-irrefutable.rs new file mode 100644 index 000000000000..61bdf57ffdb9 --- /dev/null +++ b/tests/ui/consts/const-pattern-irrefutable.rs @@ -0,0 +1,28 @@ +mod foo { + pub const b: u8 = 2; + pub const d: u8 = 2; +} + +use foo::b as c; +use foo::d; + +const a: u8 = 2; + +fn main() { + 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/src/test/ui/consts/const-pattern-irrefutable.stderr b/tests/ui/consts/const-pattern-irrefutable.stderr similarity index 52% rename from src/test/ui/consts/const-pattern-irrefutable.stderr rename to tests/ui/consts/const-pattern-irrefutable.stderr index a2b8f072c6ea..c156ea1610c4 100644 --- a/src/test/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/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 76% rename from src/test/ui/consts/const_let_refutable.stderr rename to tests/ui/consts/const_let_refutable.stderr index d7e8c048f7dc..d6119028f5b5 100644 --- a/src/test/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/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/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/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 85% 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 index ab594c921f91..257ecd7f3cf7 100644 --- a/src/test/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/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 84% rename from src/test/ui/consts/issue-28113.stderr rename to tests/ui/consts/issue-28113.stderr index 7ad1f752eb08..1294cc99bf73 100644 --- a/src/test/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/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 91% rename from src/test/ui/consts/issue-56164.stderr rename to tests/ui/consts/issue-56164.stderr index 2579b3e78272..845b23d5d873 100644 --- a/src/test/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/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 85% 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 index 74fbbc680f7e..d23513ed7ffb 100644 --- a/src/test/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/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/tests/ui/consts/issue-83182.rs b/tests/ui/consts/issue-83182.rs new file mode 100644 index 000000000000..b62f903bdc27 --- /dev/null +++ b/tests/ui/consts/issue-83182.rs @@ -0,0 +1,9 @@ +// 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); +const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; +//~^ ERROR: it is undefined behavior to use this value +fn main() {} diff --git a/src/test/ui/consts/issue-83182.32bit.stderr b/tests/ui/consts/issue-83182.stderr similarity index 74% rename from src/test/ui/consts/issue-83182.32bit.stderr rename to tests/ui/consts/issue-83182.stderr index 2776e2b6fa21..1d578f910c04 100644 --- a/src/test/ui/consts/issue-83182.32bit.stderr +++ b/tests/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/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 84% rename from src/test/ui/consts/issue-90870.fixed rename to tests/ui/consts/issue-90870.fixed index 0d28e06e5325..df44689efed7 100644 --- a/src/test/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/src/test/ui/consts/issue-90870.rs b/tests/ui/consts/issue-90870.rs similarity index 84% rename from src/test/ui/consts/issue-90870.rs rename to tests/ui/consts/issue-90870.rs index c6bfffd2c5c1..676ac73c64d9 100644 --- a/src/test/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/src/test/ui/consts/issue-90870.stderr b/tests/ui/consts/issue-90870.stderr similarity index 77% rename from src/test/ui/consts/issue-90870.stderr rename to tests/ui/consts/issue-90870.stderr index 478445cfb39c..8825efd1449d 100644 --- a/src/test/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/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 78% rename from src/test/ui/consts/std/alloc.32bit.stderr rename to tests/ui/consts/std/alloc.32bit.stderr index 79efcd3f62ee..8c83df53dade 100644 --- a/src/test/ui/consts/std/alloc.32bit.stderr +++ b/tests/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/tests/ui/consts/std/alloc.64bit.stderr similarity index 77% rename from src/test/ui/consts/std/alloc.64bit.stderr rename to tests/ui/consts/std/alloc.64bit.stderr index cb477b72b312..addedad17047 100644 --- a/src/test/ui/consts/std/alloc.64bit.stderr +++ b/tests/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/tests/ui/consts/std/alloc.rs similarity index 66% rename from src/test/ui/consts/std/alloc.rs rename to tests/ui/consts/std/alloc.rs index 708b954e84ae..9abf35d63d30 100644 --- a/src/test/ui/consts/std/alloc.rs +++ b/tests/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/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 57% rename from src/test/ui/consts/validate_never_arrays.rs rename to tests/ui/consts/validate_never_arrays.rs index a02e386c66c4..f96ca6839265 100644 --- a/src/test/ui/consts/validate_never_arrays.rs +++ b/tests/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/tests/ui/consts/validate_never_arrays.stderr similarity index 73% rename from src/test/ui/consts/validate_never_arrays.32bit.stderr rename to tests/ui/consts/validate_never_arrays.stderr index a5dbc718145c..12090e483a4e 100644 --- a/src/test/ui/consts/validate_never_arrays.32bit.stderr +++ b/tests/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 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 84% rename from src/test/ui/crate-loading/crateresolve1.rs rename to tests/ui/crate-loading/crateresolve1.rs index f5477f244dd8..61a1ee263ede 100644 --- a/src/test/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/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 89% rename from src/test/ui/derives/derive-assoc-type-not-impl.stderr rename to tests/ui/derives/derive-assoc-type-not-impl.stderr index c4fddcf5f246..91b334b412bc 100644 --- a/src/test/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/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 91% rename from src/test/ui/derives/deriving-copyclone.stderr rename to tests/ui/derives/deriving-copyclone.stderr index 80e2dd7fedef..9c4ca01ff377 100644 --- a/src/test/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/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 88% rename from src/test/ui/derives/issue-91492.stderr rename to tests/ui/derives/issue-91492.stderr index fbd48336d912..cee30ac50a6a 100644 --- a/src/test/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/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 76% rename from src/test/ui/derives/issue-91550.stderr rename to tests/ui/derives/issue-91550.stderr index 12be269565da..bf0bb3fbdf8f 100644 --- a/src/test/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,16 @@ 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: 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 help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]` | LL | #[derive(Eq, Ord, PartialEq, PartialOrd)] 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/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/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/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 + 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 75% rename from src/test/ui/empty/empty-never-array.rs rename to tests/ui/empty/empty-never-array.rs index 3de2b1a78a3d..fd93346101d8 100644 --- a/src/test/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/src/test/ui/empty/empty-never-array.stderr b/tests/ui/empty/empty-never-array.stderr similarity index 60% rename from src/test/ui/empty/empty-never-array.stderr rename to tests/ui/empty/empty-never-array.stderr index adf782743680..a488e484b2bf 100644 --- a/src/test/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,14 @@ 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: 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/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 52% rename from src/test/ui/error-codes/E0005.stderr rename to tests/ui/error-codes/E0005.stderr index 0f179259356d..4692b66413df 100644 --- a/src/test/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,8 @@ 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: 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/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 91% rename from src/test/ui/error-codes/E0275.stderr rename to tests/ui/error-codes/E0275.stderr index 451a683ac8a6..cf9a7f69bfbd 100644 --- a/src/test/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/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 55% rename from src/test/ui/error-codes/E0297.stderr rename to tests/ui/error-codes/E0297.stderr index 903422f3b9b8..293028f5f68b 100644 --- a/src/test/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/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/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/src/test/ui/error-codes/E0311.rs b/tests/ui/error-codes/E0311.rs similarity index 81% rename from src/test/ui/error-codes/E0311.rs rename to tests/ui/error-codes/E0311.rs index 566b518b4331..99e454f4d75c 100644 --- a/src/test/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/src/test/ui/error-codes/E0311.stderr b/tests/ui/error-codes/E0311.stderr similarity index 78% rename from src/test/ui/error-codes/E0311.stderr rename to tests/ui/error-codes/E0311.stderr index 9873b5ae6ff1..b0e6dd1e2727 100644 --- a/src/test/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/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 82% rename from src/test/ui/error-codes/E0464.rs rename to tests/ui/error-codes/E0464.rs index 554f1ce72d9e..47717fbd508a 100644 --- a/src/test/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/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/tests/ui/error-codes/E0711.rs b/tests/ui/error-codes/E0711.rs new file mode 100644 index 000000000000..7b1a217bdeca --- /dev/null +++ b/tests/ui/error-codes/E0711.rs @@ -0,0 +1,18 @@ +// copied from: tests/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/tests/ui/error-codes/E0711.stderr b/tests/ui/error-codes/E0711.stderr new file mode 100644 index 000000000000..f39cb4ecd4bd --- /dev/null +++ b/tests/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`. 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-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 53% rename from src/test/ui/feature-gates/feature-gate-exhaustive-patterns.stderr rename to tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr index e253e4791e8b..49e7ab6082c8 100644 --- a/src/test/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,8 @@ 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: 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/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 88% rename from src/test/ui/feature-gates/stability-attribute-consistency.stderr rename to tests/ui/feature-gates/stability-attribute-consistency.stderr index d49b44c8a358..1b93d3c96376 100644 --- a/src/test/ui/feature-gates/stability-attribute-consistency.stderr +++ b/tests/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/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 75% 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 index 20b689aa5e0a..49a82a6769dc 100644 --- a/src/test/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/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 88% rename from src/test/ui/functions-closures/closure-expected-type/README.md rename to tests/ui/functions-closures/closure-expected-type/README.md index 11d2c9b7fb76..0b749040a0e3 100644 --- a/src/test/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/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 97% rename from src/test/ui/generator/drop-control-flow.rs rename to tests/ui/generator/drop-control-flow.rs index d383680002f4..c6efda9541fb 100644 --- a/src/test/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/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 96% rename from src/test/ui/generator/print/generator-print-verbose-1.rs rename to tests/ui/generator/print/generator-print-verbose-1.rs index fe0687722b0b..89124ad7289a 100644 --- a/src/test/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/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 94% rename from src/test/ui/generic-associated-types/impl_bounds.stderr rename to tests/ui/generic-associated-types/impl_bounds.stderr index 3456b345cc28..261070d1db4b 100644 --- a/src/test/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/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 90% rename from src/test/ui/generic-associated-types/issue-101020.stderr rename to tests/ui/generic-associated-types/issue-101020.stderr index 422ac5484271..1f9273a8c4ab 100644 --- a/src/test/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/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 69% rename from src/test/ui/generic-associated-types/issue-91139.rs rename to tests/ui/generic-associated-types/issue-91139.rs index e321da53d566..adc0cb4e0423 100644 --- a/src/test/ui/generic-associated-types/issue-91139.rs +++ b/tests/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/tests/ui/generic-associated-types/issue-91139.stderr b/tests/ui/generic-associated-types/issue-91139.stderr new file mode 100644 index 000000000000..d9d76adfbb55 --- /dev/null +++ b/tests/ui/generic-associated-types/issue-91139.stderr @@ -0,0 +1,14 @@ +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: `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 + 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 93% 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 index 36974b3df5e6..83655341d6a2 100644 --- 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 @@ -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/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 97% rename from src/test/ui/hashmap/hashmap-memory.rs rename to tests/ui/hashmap/hashmap-memory.rs index 2031196ab215..87f8b6ad5730 100644 --- a/src/test/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/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 85% 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 index fdd192f43137..810f7c28c004 100644 --- 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 @@ -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 @@ -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/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 83% 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 index c10a0888a4f2..8aa29926d4f9 100644 --- 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 @@ -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/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr similarity index 51% 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 index 25a4f6088deb..3240518fbbe0 100644 --- 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 @@ -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/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 86% 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 index 14fe1803b734..62d0128fd85a 100644 --- 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 @@ -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/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 90% rename from src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr rename to tests/ui/hygiene/extern-prelude-from-opaque-fail.stderr index e89c19b5881e..f1f4caee3619 100644 --- a/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr +++ b/tests/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/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 94% rename from src/test/ui/impl-trait/bound-normalization-fail.stderr rename to tests/ui/impl-trait/bound-normalization-fail.stderr index a9fa2da569f8..f04a753a0e8b 100644 --- a/src/test/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 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 79% rename from src/test/ui/impl-trait/in-trait/issue-102140.stderr rename to tests/ui/impl-trait/in-trait/issue-102140.stderr index 08602185f50c..18bb63745d7a 100644 --- a/src/test/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/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 87% rename from src/test/ui/impl-trait/issues/issue-62742.stderr rename to tests/ui/impl-trait/issues/issue-62742.stderr index bc342dc46893..d872291c8705 100644 --- a/src/test/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/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 82% rename from src/test/ui/impl-trait/nested-return-type2-tait2.stderr rename to tests/ui/impl-trait/nested-return-type2-tait2.stderr index 348c737b0b16..b85bb5efd100 100644 --- a/src/test/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/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 82% rename from src/test/ui/impl-trait/nested-return-type2-tait3.stderr rename to tests/ui/impl-trait/nested-return-type2-tait3.stderr index 6ac671415575..19fd3c134acd 100644 --- a/src/test/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/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 88% 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 index cf2998bbf407..a4ff510477a4 100644 --- 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 @@ -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/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/tests/ui/imports/bad-import-in-nested.rs b/tests/ui/imports/bad-import-in-nested.rs new file mode 100644 index 000000000000..2e95480ad412 --- /dev/null +++ b/tests/ui/imports/bad-import-in-nested.rs @@ -0,0 +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 { + pub mod D {} +} + +mod B { + use crate::C::{self, AA}; + //~^ ERROR unresolved import + + use crate::{A, C::BB}; + //~^ ERROR unresolved import +} + +fn main() {} diff --git a/tests/ui/imports/bad-import-in-nested.stderr b/tests/ui/imports/bad-import-in-nested.stderr new file mode 100644 index 000000000000..855b1e637e97 --- /dev/null +++ b/tests/ui/imports/bad-import-in-nested.stderr @@ -0,0 +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:20:26 + | +LL | use crate::C::{self, AA}; + | ^^ no `AA` in `C` + | + = note: consider importing this type alias instead: + crate::A::AA + +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`. diff --git a/tests/ui/imports/bad-import-with-rename.rs b/tests/ui/imports/bad-import-with-rename.rs new file mode 100644 index 000000000000..ffe56916f92f --- /dev/null +++ b/tests/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/tests/ui/imports/bad-import-with-rename.stderr b/tests/ui/imports/bad-import-with-rename.stderr new file mode 100644 index 000000000000..cace2a7a51c8 --- /dev/null +++ b/tests/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/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 95% rename from src/test/ui/inference/issue-80816.rs rename to tests/ui/inference/issue-80816.rs index ead320a4fe42..4d319b44987e 100644 --- a/src/test/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/src/test/ui/inference/issue-80816.stderr b/tests/ui/inference/issue-80816.stderr similarity index 82% rename from src/test/ui/inference/issue-80816.stderr rename to tests/ui/inference/issue-80816.stderr index bd833340df4c..80c0c8abec6a 100644 --- a/src/test/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/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 81% rename from src/test/ui/intrinsics/intrinsic-unreachable.rs rename to tests/ui/intrinsics/intrinsic-unreachable.rs index da1a32d58eac..73dd71d482ff 100644 --- a/src/test/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/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 56% rename from src/test/ui/issues/issue-15381.rs rename to tests/ui/issues/issue-15381.rs index 392fb1b24ddc..23b266bef1d9 100644 --- a/src/test/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/src/test/ui/issues/issue-15381.stderr b/tests/ui/issues/issue-15381.stderr similarity index 77% rename from src/test/ui/issues/issue-15381.stderr rename to tests/ui/issues/issue-15381.stderr index c4667ce1c8ba..085958411ccb 100644 --- a/src/test/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/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 89% rename from src/test/ui/issues/issue-20413.stderr rename to tests/ui/issues/issue-20413.stderr index 78df445972c9..202e8463145c 100644 --- a/src/test/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/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 86% rename from src/test/ui/issues/issue-22872.stderr rename to tests/ui/issues/issue-22872.stderr index 7382d40c0107..9510197197a8 100644 --- a/src/test/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/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 90% rename from src/test/ui/issues/issue-23122-2.stderr rename to tests/ui/issues/issue-23122-2.stderr index 1f50b06a0e4c..06e5b711a822 100644 --- a/src/test/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/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 63% rename from src/test/ui/issues/issue-35241.stderr rename to tests/ui/issues/issue-35241.stderr index 42a78ed97e02..d600e934bd57 100644 --- a/src/test/ui/issues/issue-35241.stderr +++ b/tests/ui/issues/issue-35241.stderr @@ -2,15 +2,15 @@ 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 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/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 89% rename from src/test/ui/issues/issue-38821.stderr rename to tests/ui/issues/issue-38821.stderr index 9abd2436b8a3..a52a9c138f14 100644 --- a/src/test/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/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 76% rename from src/test/ui/issues/issue-39970.stderr rename to tests/ui/issues/issue-39970.stderr index 774575d1d019..0cabdf7f234a 100644 --- a/src/test/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/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/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/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 97% rename from src/test/ui/iterators/integral.stderr rename to tests/ui/iterators/integral.stderr index 047a71f98d9f..c142fec8da0f 100644 --- a/src/test/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 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/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`. 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 94% rename from src/test/ui/kindck/kindck-copy.stderr rename to tests/ui/kindck/kindck-copy.stderr index 9af89159a8cf..aee2aa98a60c 100644 --- a/src/test/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/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 88% rename from src/test/ui/kindck/kindck-impl-type-params-2.stderr rename to tests/ui/kindck/kindck-impl-type-params-2.stderr index 930d96375bff..1d26ae51f44a 100644 --- a/src/test/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/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 82% rename from src/test/ui/kindck/kindck-impl-type-params.stderr rename to tests/ui/kindck/kindck-impl-type-params.stderr index 8dbe0c38c1ee..6fd1fc3f7a1a 100644 --- a/src/test/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/src/test/ui/kindck/kindck-inherited-copy-bound.curr.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr similarity index 95% rename from src/test/ui/kindck/kindck-inherited-copy-bound.curr.stderr rename to tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr index e81d2441e6ef..8d45748a6c41 100644 --- a/src/test/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/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 94% 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 index 2380533b9c3e..2fbb5a98a8d9 100644 --- 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 @@ -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/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 96% rename from src/test/ui/let-else/let-else-bindings.rs rename to tests/ui/let-else/let-else-bindings.rs index 7d2cad978fc0..53ac398b8f52 100644 --- a/src/test/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/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/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/src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs similarity index 84% 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 index 645bc7db0dda..d6ce112ec93d 100644 --- a/src/test/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/src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr similarity index 68% 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 index 31fd8a4d633e..2d58d3a02f35 100644 --- a/src/test/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/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/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() {} 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/tests/ui/lto/issue-100772.rs b/tests/ui/lto/issue-100772.rs new file mode 100644 index 000000000000..d6b06719277e --- /dev/null +++ b/tests/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); +} 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/tests/ui/methods/field-method-suggestion-using-return-ty.rs b/tests/ui/methods/field-method-suggestion-using-return-ty.rs new file mode 100644 index 000000000000..07b975c44c90 --- /dev/null +++ b/tests/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/tests/ui/methods/field-method-suggestion-using-return-ty.stderr b/tests/ui/methods/field-method-suggestion-using-return-ty.stderr new file mode 100644 index 000000000000..51c52a07e10f --- /dev/null +++ b/tests/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/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 87% 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 index 8846efba871b..f3db56d1d539 100644 --- a/src/test/ui/methods/method-not-found-generic-arg-elision.stderr +++ b/tests/ui/methods/method-not-found-generic-arg-elision.stderr @@ -88,9 +88,16 @@ 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: 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 error: aborting due to 9 previous errors 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/tests/ui/mir/issue-106062.rs b/tests/ui/mir/issue-106062.rs new file mode 100644 index 000000000000..621ba566ee38 --- /dev/null +++ b/tests/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/tests/ui/mir/issue-106062.stderr b/tests/ui/mir/issue-106062.stderr new file mode 100644 index 000000000000..2f6524d03e00 --- /dev/null +++ b/tests/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`. 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/tests/ui/mismatched_types/issue-106182.fixed b/tests/ui/mismatched_types/issue-106182.fixed new file mode 100644 index 000000000000..b8ddebf6fb63 --- /dev/null +++ b/tests/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/tests/ui/mismatched_types/issue-106182.rs b/tests/ui/mismatched_types/issue-106182.rs new file mode 100644 index 000000000000..6eb6df13a028 --- /dev/null +++ b/tests/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/tests/ui/mismatched_types/issue-106182.stderr b/tests/ui/mismatched_types/issue-106182.stderr new file mode 100644 index 000000000000..ac3ab8e9895c --- /dev/null +++ b/tests/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`. 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 99% rename from src/test/ui/mismatched_types/ref-pat-suggestions.stderr rename to tests/ui/mismatched_types/ref-pat-suggestions.stderr index d9501a9bbc61..63eaa3930b1c 100644 --- a/src/test/ui/mismatched_types/ref-pat-suggestions.stderr +++ b/tests/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 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 80% 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 index 9e94aa2c7b3b..968e285af7ff 100644 --- 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 @@ -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/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 83% rename from src/test/ui/never_type/exhaustive_patterns.stderr rename to tests/ui/never_type/exhaustive_patterns.stderr index e41baf862180..40c7c1d1067f 100644 --- a/src/test/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/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 93% rename from src/test/ui/never_type/issue-52443.stderr rename to tests/ui/never_type/issue-52443.stderr index de5c9c560163..33b7a9185d0e 100644 --- a/src/test/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/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/tests/ui/nll/closure-malformed-projection-input-issue-102800.rs b/tests/ui/nll/closure-malformed-projection-input-issue-102800.rs new file mode 100644 index 000000000000..260c16c17d4a --- /dev/null +++ b/tests/ui/nll/closure-malformed-projection-input-issue-102800.rs @@ -0,0 +1,21 @@ +// Regression test for #102800 +// +// Here we are generating higher-ranked region constraints when normalizing and relating closure +// input types. Previously this was an ICE in the error path because we didn't register enough +// diagnostic information to render the higher-ranked subtyping error. + +// check-fail + +trait Trait { + type Ty; +} + +impl Trait for &'static () { + type Ty = (); +} + +fn main() { + let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + //~^ ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough +} diff --git a/tests/ui/nll/closure-malformed-projection-input-issue-102800.stderr b/tests/ui/nll/closure-malformed-projection-input-issue-102800.stderr new file mode 100644 index 000000000000..46dba0064339 --- /dev/null +++ b/tests/ui/nll/closure-malformed-projection-input-issue-102800.stderr @@ -0,0 +1,20 @@ +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: aborting due to 2 previous errors + 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 70% rename from src/test/ui/nll/ty-outlives/wf-unreachable.stderr rename to tests/ui/nll/ty-outlives/wf-unreachable.stderr index a62157f44f53..da3bc2083228 100644 --- a/src/test/ui/nll/ty-outlives/wf-unreachable.stderr +++ b/tests/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/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 61% rename from src/test/ui/nll/user-annotations/ascribed-type-wf.rs rename to tests/ui/nll/user-annotations/ascribed-type-wf.rs index 14460dea5b52..5db02c46ec36 100644 --- a/src/test/ui/nll/user-annotations/ascribed-type-wf.rs +++ b/tests/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/tests/ui/nll/user-annotations/ascribed-type-wf.stderr b/tests/ui/nll/user-annotations/ascribed-type-wf.stderr new file mode 100644 index 000000000000..91e7c6b8ecf1 --- /dev/null +++ b/tests/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/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/tests/ui/nll/user-annotations/closure-sig.rs b/tests/ui/nll/user-annotations/closure-sig.rs new file mode 100644 index 000000000000..4dbd3fd8d81e --- /dev/null +++ b/tests/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/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/tests/ui/nll/user-annotations/normalization-2.rs b/tests/ui/nll/user-annotations/normalization-2.rs new file mode 100644 index 000000000000..be23c3b74785 --- /dev/null +++ b/tests/ui/nll/user-annotations/normalization-2.rs @@ -0,0 +1,152 @@ +// 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 { + 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>() { + 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, 'e, 'f, 'g, 'h>() { + >::method::>; + //~^ ERROR lifetime may not live long enough + >::method::>; + //~^ ERROR lifetime may not live long enough + + >::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 +} + +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 {}; + //~^ 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_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>() { + 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, 'd, 'e, 'f>() { + 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(_) => {}, + }; + 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/tests/ui/nll/user-annotations/normalization-2.stderr b/tests/ui/nll/user-annotations/normalization-2.stderr new file mode 100644 index 000000000000..5299282ea151 --- /dev/null +++ b/tests/ui/nll/user-annotations/normalization-2.stderr @@ -0,0 +1,296 @@ +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:43: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:48: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:50: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:55:5 + | +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:57:5 + | +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:60:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'c` defined here +... +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:82: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:84: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:89:5 + | +LL | fn test_variants<'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:91: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:93: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:98:7 + | +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: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 +... +LL | MyTy::>::Struct {}; // without SelfTy + | ^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:119: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:123: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:125: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:132:9 + | +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:134:9 + | +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:136:9 + | +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 28 previous errors + diff --git a/tests/ui/nll/user-annotations/normalization-default.rs b/tests/ui/nll/user-annotations/normalization-default.rs new file mode 100644 index 000000000000..fa52e6d857f6 --- /dev/null +++ b/tests/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/tests/ui/nll/user-annotations/normalization-default.stderr b/tests/ui/nll/user-annotations/normalization-default.stderr new file mode 100644 index 000000000000..6c73ac692548 --- /dev/null +++ b/tests/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/tests/ui/nll/user-annotations/normalization-infer.rs b/tests/ui/nll/user-annotations/normalization-infer.rs new file mode 100644 index 000000000000..8bfc272d4ba0 --- /dev/null +++ b/tests/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/tests/ui/nll/user-annotations/normalization-infer.stderr b/tests/ui/nll/user-annotations/normalization-infer.stderr new file mode 100644 index 000000000000..12854ab6816b --- /dev/null +++ b/tests/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/tests/ui/nll/user-annotations/normalization-self.rs b/tests/ui/nll/user-annotations/normalization-self.rs new file mode 100644 index 000000000000..c18760b53cff --- /dev/null +++ b/tests/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/tests/ui/nll/user-annotations/normalization-self.stderr b/tests/ui/nll/user-annotations/normalization-self.stderr new file mode 100644 index 000000000000..e231ed03c2ee --- /dev/null +++ b/tests/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 + diff --git a/tests/ui/nll/user-annotations/normalization.rs b/tests/ui/nll/user-annotations/normalization.rs new file mode 100644 index 000000000000..c2e892f573c2 --- /dev/null +++ b/tests/ui/nll/user-annotations/normalization.rs @@ -0,0 +1,17 @@ +// Test that we enforce a `&'static` requirement that is only visible +// after normalization. + +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 _: <() 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/tests/ui/nll/user-annotations/normalization.stderr b/tests/ui/nll/user-annotations/normalization.stderr new file mode 100644 index 000000000000..975cb4b66d91 --- /dev/null +++ b/tests/ui/nll/user-annotations/normalization.stderr @@ -0,0 +1,25 @@ +error[E0597]: `a` does not live long enough + --> $DIR/normalization.rs:10:31 + | +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[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/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 87% rename from src/test/ui/not-panic/not-panic-safe-4.stderr rename to tests/ui/not-panic/not-panic-safe-4.stderr index fc1c594d0d42..9428c125651e 100644 --- a/src/test/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/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/tests/ui/not-panic/not-panic-safe.rs b/tests/ui/not-panic/not-panic-safe.rs new file mode 100644 index 000000000000..1b3c6482ce94 --- /dev/null +++ b/tests/ui/not-panic/not-panic-safe.rs @@ -0,0 +1,10 @@ +#![allow(dead_code)] + +use std::panic::UnwindSafe; + +fn assert() {} + +fn main() { + 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 new file mode 100644 index 000000000000..37a6aee39066 --- /dev/null +++ b/tests/ui/not-panic/not-panic-safe.stderr @@ -0,0 +1,22 @@ +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 &mut &i32>(); + | ^^^^^^^^^^^^^^ `&mut &mut &i32` may not be safely transferred across an unwind boundary + | + = 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 + +For more information about this error, try `rustc --explain E0277`. 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 93% 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 index 95b22ac05948..4adcf4feee90 100644 --- 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 @@ -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/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 64% rename from src/test/ui/parser/issues/issue-17904.rs rename to tests/ui/parser/issues/issue-17904.rs index 7d6a54f4be12..020fb41c2273 100644 --- a/src/test/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 new file mode 100644 index 000000000000..aa343975dcac --- /dev/null +++ b/tests/ui/parser/issues/issue-17904.stderr @@ -0,0 +1,17 @@ +error: where clauses are not allowed before tuple struct bodies + --> $DIR/issue-17904.rs:6:15 + | +LL | struct Foo where T: Copy, (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: Copy, (T); +LL + struct Foo(T) where T: Copy; + | + +error: aborting due to previous error + 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/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 + 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 85% rename from src/test/ui/parser/recover-quantified-closure.rs rename to tests/ui/parser/recover-quantified-closure.rs index 10af39b70074..df22f5e065c8 100644 --- a/src/test/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/src/test/ui/parser/recover-quantified-closure.stderr b/tests/ui/parser/recover-quantified-closure.stderr similarity index 89% rename from src/test/ui/parser/recover-quantified-closure.stderr rename to tests/ui/parser/recover-quantified-closure.stderr index 39eec80f658a..9ec4d2c034d0 100644 --- a/src/test/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 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/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 + 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/tests/ui/pattern/usefulness/issue-31561.rs b/tests/ui/pattern/usefulness/issue-31561.rs new file mode 100644 index 000000000000..82414f0418bb --- /dev/null +++ b/tests/ui/pattern/usefulness/issue-31561.rs @@ -0,0 +1,11 @@ +enum Thing { + Foo(u8), + Bar, + Baz +} + +fn main() { + let Thing::Foo(y) = Thing::Foo(1); + //~^ ERROR refutable pattern in local binding + //~| `Thing::Bar` and `Thing::Baz` not covered +} diff --git a/src/test/ui/pattern/usefulness/issue-31561.stderr b/tests/ui/pattern/usefulness/issue-31561.stderr similarity index 58% rename from src/test/ui/pattern/usefulness/issue-31561.stderr rename to tests/ui/pattern/usefulness/issue-31561.stderr index 20f2f09500aa..5367de5e513c 100644 --- a/src/test/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,17 @@ 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: 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/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 68% rename from src/test/ui/pattern/usefulness/non-exhaustive-defined-here.rs rename to tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs index af42fc1aeb46..5145f769075d 100644 --- a/src/test/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/src/test/ui/pattern/usefulness/non-exhaustive-defined-here.stderr b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr similarity index 78% rename from src/test/ui/pattern/usefulness/non-exhaustive-defined-here.stderr rename to tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr index 678c9b2ab58c..769d4070fb58 100644 --- a/src/test/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,15 @@ 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: 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/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/tests/ui/pattern/usefulness/refutable-pattern-errors.rs b/tests/ui/pattern/usefulness/refutable-pattern-errors.rs new file mode 100644 index 000000000000..7a3e991d5931 --- /dev/null +++ b/tests/ui/pattern/usefulness/refutable-pattern-errors.rs @@ -0,0 +1,9 @@ +fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } +//~^ 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 +} diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr b/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr similarity index 81% rename from src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr rename to tests/ui/pattern/usefulness/refutable-pattern-errors.stderr index d1dacc822e94..c518de47740d 100644 --- a/src/test/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 new file mode 100644 index 000000000000..17dc38ab25d9 --- /dev/null +++ b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs @@ -0,0 +1,6 @@ +fn main() { + let f = |3: isize| println!("hello"); + //~^ ERROR refutable pattern in function argument + //~| `_` not covered + f(4); +} 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 81% 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 index c9d8cf43f95f..55f0b2319fb7 100644 --- a/src/test/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/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 91% rename from src/test/ui/phantom-auto-trait.stderr rename to tests/ui/phantom-auto-trait.stderr index 015c8fa4cd19..4769d53eb354 100644 --- a/src/test/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/src/test/ui/pin-macro/cant_access_internals.rs b/tests/ui/pin-macro/cant_access_internals.rs similarity index 91% rename from src/test/ui/pin-macro/cant_access_internals.rs rename to tests/ui/pin-macro/cant_access_internals.rs index 120d08894f8f..5826a18b5718 100644 --- a/src/test/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/src/test/ui/pin-macro/cant_access_internals.stderr b/tests/ui/pin-macro/cant_access_internals.stderr similarity index 89% rename from src/test/ui/pin-macro/cant_access_internals.stderr rename to tests/ui/pin-macro/cant_access_internals.stderr index 060c9c48c21c..d43027657f04 100644 --- a/src/test/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/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs similarity index 96% 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 index ca2b6cf75937..59774bc753dc 100644 --- a/src/test/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/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr similarity index 92% 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 index fc1be052fb79..4ecc6370d3ca 100644 --- a/src/test/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 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 78% rename from src/test/ui/privacy/issue-75906.stderr rename to tests/ui/privacy/issue-75906.stderr index 4c6a68646adc..600dc7c876ff 100644 --- a/src/test/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/src/test/ui/privacy/issue-75907.rs b/tests/ui/privacy/issue-75907.rs similarity index 86% rename from src/test/ui/privacy/issue-75907.rs rename to tests/ui/privacy/issue-75907.rs index 6da99cf6435c..3bed841d13ea 100644 --- a/src/test/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/src/test/ui/privacy/issue-75907.stderr b/tests/ui/privacy/issue-75907.stderr similarity index 75% rename from src/test/ui/privacy/issue-75907.stderr rename to tests/ui/privacy/issue-75907.stderr index 2f89e31a31a1..f7cb874c2cc0 100644 --- a/src/test/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/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 88% rename from src/test/ui/privacy/privacy5.stderr rename to tests/ui/privacy/privacy5.stderr index 680161272cef..615b0af2762d 100644 --- a/src/test/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/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 69% rename from src/test/ui/privacy/private-field-ty-err.stderr rename to tests/ui/privacy/private-field-ty-err.stderr index e583a25fd8fd..98ba7856e57e 100644 --- a/src/test/ui/privacy/private-field-ty-err.stderr +++ b/tests/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/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/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/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 95% 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 index 14e5df21ef65..3b2a5e701886 100644 --- 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 @@ -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/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/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 + 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 53% rename from src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr rename to tests/ui/recursion/recursive-types-are-not-uninhabited.stderr index 86ad6aa847c9..1b4d80d90571 100644 --- a/src/test/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,8 @@ 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: 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/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 81% 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 index 87e33e1ccff2..2a2625203618 100644 --- 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 @@ -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-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 81% rename from src/test/ui/regions/regions-free-region-ordering-caller.stderr rename to tests/ui/regions/regions-free-region-ordering-caller.stderr index c79ed50c6a4a..cdf70d2a5be9 100644 --- a/src/test/ui/regions/regions-free-region-ordering-caller.stderr +++ b/tests/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-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 80% rename from src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr rename to tests/ui/regions/regions-outlives-projection-container-hrtb.stderr index 187e9056e115..6a7c908fa400 100644 --- a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr +++ b/tests/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.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 81% rename from src/test/ui/regions/regions-outlives-projection-container-wc.stderr rename to tests/ui/regions/regions-outlives-projection-container-wc.stderr index 4178e951c86e..eba2a0d58534 100644 --- a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr +++ b/tests/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.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 89% rename from src/test/ui/regions/regions-outlives-projection-container.stderr rename to tests/ui/regions/regions-outlives-projection-container.stderr index 073a31900227..d20a2f06adfe 100644 --- a/src/test/ui/regions/regions-outlives-projection-container.stderr +++ b/tests/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` 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 80% rename from src/test/ui/resolve/issue-39559-2.stderr rename to tests/ui/resolve/issue-39559-2.stderr index ea27e7bd2508..e9d8eb0835bd 100644 --- a/src/test/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/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 88% rename from src/test/ui/resolve/issue-42944.rs rename to tests/ui/resolve/issue-42944.rs index a4404857a56a..7e439c10b7b8 100644 --- a/src/test/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/src/test/ui/resolve/issue-42944.stderr b/tests/ui/resolve/issue-42944.stderr similarity index 67% rename from src/test/ui/resolve/issue-42944.stderr rename to tests/ui/resolve/issue-42944.stderr index 0ee9fd391fe1..4ffa9402c667 100644 --- a/src/test/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 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 93% rename from src/test/ui/resolve/privacy-enum-ctor.stderr rename to tests/ui/resolve/privacy-enum-ctor.stderr index d734fa76b4a3..a24fe4d23ea2 100644 --- a/src/test/ui/resolve/privacy-enum-ctor.stderr +++ b/tests/ui/resolve/privacy-enum-ctor.stderr @@ -264,15 +264,15 @@ 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 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 */); @@ -305,15 +305,15 @@ 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 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 */); @@ -346,15 +346,15 @@ 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 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/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 89% rename from src/test/ui/resolve/privacy-struct-ctor.stderr rename to tests/ui/resolve/privacy-struct-ctor.stderr index 17a666a401ce..c1fcaaf05738 100644 --- a/src/test/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 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/tests/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 new file mode 100644 index 000000000000..5053c115b453 --- /dev/null +++ b/tests/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/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 new file mode 100644 index 000000000000..a3e559054f9b --- /dev/null +++ b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr @@ -0,0 +1,25 @@ +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 { + | --- ^^^ ^ + | | + | unsatisfied trait bound introduced here +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/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs new file mode 100644 index 000000000000..b816c4a19da1 --- /dev/null +++ b/tests/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/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr new file mode 100644 index 000000000000..425d7e4bca0b --- /dev/null +++ b/tests/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`. 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/tests/ui/rfc-2632-const-trait-impl/call.rs b/tests/ui/rfc-2632-const-trait-impl/call.rs new file mode 100644 index 000000000000..5f48c2353735 --- /dev/null +++ b/tests/ui/rfc-2632-const-trait-impl/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-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 88% 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 index d463c774e289..96e0c78b9c7d 100644 --- 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 @@ -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/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 83% 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 index 086547542bb0..22f13a7416e9 100644 --- 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 @@ -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/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/tests/ui/rfc-2632-const-trait-impl/gate.rs b/tests/ui/rfc-2632-const-trait-impl/gate.rs new file mode 100644 index 000000000000..f2cd26c91b64 --- /dev/null +++ b/tests/ui/rfc-2632-const-trait-impl/gate.rs @@ -0,0 +1,5 @@ +// gate-test-const_closures +fn main() { + (const || {})(); + //~^ ERROR: const closures are experimental +} diff --git a/tests/ui/rfc-2632-const-trait-impl/gate.stderr b/tests/ui/rfc-2632-const-trait-impl/gate.stderr new file mode 100644 index 000000000000..30edc4127e1f --- /dev/null +++ b/tests/ui/rfc-2632-const-trait-impl/gate.stderr @@ -0,0 +1,12 @@ +error[E0658]: const closures are experimental + --> $DIR/gate.rs:3: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`. 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/tests/ui/rfc-2632-const-trait-impl/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 new file mode 100644 index 000000000000..cd8bb5963ada --- /dev/null +++ b/tests/ui/rfc-2632-const-trait-impl/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 +} diff --git a/tests/ui/rfc-2632-const-trait-impl/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 new file mode 100644 index 000000000000..979d7febbcaf --- /dev/null +++ b/tests/ui/rfc-2632-const-trait-impl/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/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 81% 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 index c554671e18d8..8923416f4c77 100644 --- 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 @@ -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/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 84% 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 index 61f9840e0d0a..d7aa0d95cfc7 100644 --- 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 @@ -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/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 83% 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 index 0b450a947428..6a3396401d2b 100644 --- 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 @@ -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 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 87% rename from src/test/ui/save-analysis/issue-89066.rs rename to tests/ui/save-analysis/issue-89066.rs index 2873f5237d4a..c65e2d73fade 100644 --- a/src/test/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/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 90% rename from src/test/ui/specialization/issue-38091-2.stderr rename to tests/ui/specialization/issue-38091-2.stderr index 117fb10bb7ef..5a05f9c270ab 100644 --- a/src/test/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/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 81% rename from src/test/ui/specialization/issue-39448.stderr rename to tests/ui/specialization/issue-39448.stderr index 60157d9a3e1b..9ce51d1136d0 100644 --- a/src/test/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/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 99% rename from src/test/ui/stability-attribute/stability-attribute-sanity.stderr rename to tests/ui/stability-attribute/stability-attribute-sanity.stderr index 079230b2a316..89a8425f5e78 100644 --- a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr +++ b/tests/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/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/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs new file mode 100644 index 000000000000..15f08486f0f0 --- /dev/null +++ b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs @@ -0,0 +1,11 @@ +fn main() { + let A = 3; + //~^ 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 + + const A: i32 = 2; + //~^ constant defined here +} 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 62% 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 index 618bcaca14c4..1c1cab25fbfa 100644 --- 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 @@ -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/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 87% rename from src/test/ui/suggestions/derive-clone-for-eq.stderr rename to tests/ui/suggestions/derive-clone-for-eq.stderr index 0a18b770405c..9d843c2514b9 100644 --- a/src/test/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/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 91% rename from src/test/ui/suggestions/derive-macro-missing-bounds.stderr rename to tests/ui/suggestions/derive-macro-missing-bounds.stderr index b9f7739654a9..79036279df95 100644 --- a/src/test/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/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 59% rename from src/test/ui/suggestions/derive-trait-for-method-call.stderr rename to tests/ui/suggestions/derive-trait-for-method-call.stderr index 14e8a2675dd1..924b26a8c75f 100644 --- a/src/test/ui/suggestions/derive-trait-for-method-call.stderr +++ b/tests/ui/suggestions/derive-trait-for-method-call.stderr @@ -16,10 +16,18 @@ 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: 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: the trait `Default` must be implemented --> $SRC_DIR/core/src/default.rs:LL:COL help: consider annotating `Enum` with `#[derive(Clone)]` @@ -45,10 +53,18 @@ 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: 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 help: consider annotating `CloneStruct` with `#[derive(Default)]` | LL | #[derive(Default)] @@ -73,9 +89,16 @@ LL | let y = x.test(); | = note: doesn't satisfy `Vec: Clone` | - = note: the following trait bounds were not satisfied: - `Vec: Clone` - `Instant: Default` +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 error: aborting due to 3 previous errors 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 84% 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 index d0ddb34d9fe2..4cbcd31fa5ec 100644 --- a/src/test/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,15 +20,15 @@ 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 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 */); @@ -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,15 +56,15 @@ 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 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(); @@ -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,15 +110,15 @@ 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 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 */); @@ -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 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/tests/ui/suggestions/issue-105645.rs b/tests/ui/suggestions/issue-105645.rs new file mode 100644 index 000000000000..681ce1c6e37a --- /dev/null +++ b/tests/ui/suggestions/issue-105645.rs @@ -0,0 +1,8 @@ +fn main() { + let mut buf = [0u8; 50]; + let mut bref = buf.as_slice(); + foo(&mut bref); + //~^ ERROR 4:9: 4:18: the trait bound `&[u8]: std::io::Write` is not satisfied [E0277] +} + +fn foo(_: &mut impl std::io::Write) {} diff --git a/tests/ui/suggestions/issue-105645.stderr b/tests/ui/suggestions/issue-105645.stderr new file mode 100644 index 000000000000..895f5ffd1e1c --- /dev/null +++ b/tests/ui/suggestions/issue-105645.stderr @@ -0,0 +1,18 @@ +error[E0277]: the trait bound `&[u8]: std::io::Write` is not satisfied + --> $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`. 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 79% rename from src/test/ui/suggestions/issue-96223.stderr rename to tests/ui/suggestions/issue-96223.stderr index 72a9a739a64f..d4e9433dfda0 100644 --- a/src/test/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/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/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/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs similarity index 91% 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 index c6802ac6cc70..4096d95e5fd7 100644 --- a/src/test/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/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr similarity index 71% 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 index 872263fd7311..936d87f79682 100644 --- a/src/test/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/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 91% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr index fa758bf05df5..c5c3f7b468c8 100644 --- a/src/test/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 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/tests/ui/suggestions/method-access-to-range-literal-typo.fixed b/tests/ui/suggestions/method-access-to-range-literal-typo.fixed new file mode 100644 index 000000000000..13601eef6c25 --- /dev/null +++ b/tests/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/tests/ui/suggestions/method-access-to-range-literal-typo.rs similarity index 64% 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 index ac662edafe6b..fdcd6425d32d 100644 --- a/src/test/ui/suggestions/method-access-to-range-literal-typo.rs +++ b/tests/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/tests/ui/suggestions/method-access-to-range-literal-typo.stderr similarity index 61% 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 index c84f94678914..f421408944bb 100644 --- a/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr +++ b/tests/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/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 64% rename from src/test/ui/suggestions/suggest-remove-refs-1.stderr rename to tests/ui/suggestions/suggest-remove-refs-1.stderr index 1a843f3f5097..387770535f68 100644 --- a/src/test/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/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 64% rename from src/test/ui/suggestions/suggest-remove-refs-2.stderr rename to tests/ui/suggestions/suggest-remove-refs-2.stderr index f39361d529fb..1632b2abb2f8 100644 --- a/src/test/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/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 56% rename from src/test/ui/suggestions/suggest-remove-refs-3.stderr rename to tests/ui/suggestions/suggest-remove-refs-3.stderr index 31cca323d0e4..7bf421a7729d 100644 --- a/src/test/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/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`. 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 63% rename from src/test/ui/test-attrs/inaccessible-test-modules.stderr rename to tests/ui/test-attrs/inaccessible-test-modules.stderr index 0c16ecd4c862..a45c5bd45880 100644 --- a/src/test/ui/test-attrs/inaccessible-test-modules.stderr +++ b/tests/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,14 +10,10 @@ 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; - | ~~~~~~~~~~~ +LL | use test::test as y; + | ~~~~~~~~~~~~~~~~ error: aborting due to 2 previous errors 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 86% rename from src/test/ui/traits/cycle-cache-err-60010.stderr rename to tests/ui/traits/cycle-cache-err-60010.stderr index 2478eb35422e..eeee997608e6 100644 --- a/src/test/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/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/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/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 93% rename from src/test/ui/traits/inductive-overflow/lifetime.rs rename to tests/ui/traits/inductive-overflow/lifetime.rs index 004e477374a6..bf536d21cf97 100644 --- a/src/test/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/src/test/ui/traits/inductive-overflow/lifetime.stderr b/tests/ui/traits/inductive-overflow/lifetime.stderr similarity index 79% rename from src/test/ui/traits/inductive-overflow/lifetime.stderr rename to tests/ui/traits/inductive-overflow/lifetime.stderr index b72d53bddbc8..357e59991a3d 100644 --- a/src/test/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/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 79% rename from src/test/ui/traits/inductive-overflow/simultaneous.stderr rename to tests/ui/traits/inductive-overflow/simultaneous.stderr index 09930e60efe4..e3b4ec07d236 100644 --- a/src/test/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/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 85% rename from src/test/ui/traits/inductive-overflow/supertrait.stderr rename to tests/ui/traits/inductive-overflow/supertrait.stderr index 4b862cf79ce3..b537ecf17213 100644 --- a/src/test/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/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 90% rename from src/test/ui/traits/issue-18400.stderr rename to tests/ui/traits/issue-18400.stderr index 4394e6f7e05f..edaf08f490f1 100644 --- a/src/test/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/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 84% rename from src/test/ui/traits/issue-91594.stderr rename to tests/ui/traits/issue-91594.stderr index 9f9acf851135..6b314fa586d3 100644 --- a/src/test/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/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 97% 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 index 30cc76b2e1aa..ce690b749f55 100644 --- a/src/test/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/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 93% 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 index 53178328c56a..92d9d32cf9c7 100644 --- 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 @@ -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/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/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs b/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs new file mode 100644 index 000000000000..5449f5f00d52 --- /dev/null +++ b/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs @@ -0,0 +1,69 @@ +// check-pass + +// This test checks that we're correctly dealing with inductive cycles +// with canonical inference variables. + +trait Trait {} + +trait IsNotU32 {} +impl IsNotU32 for i32 {} +impl Trait for () // impl 1 +where + (): Trait +{} + +impl Trait for () {} // impl 2 + +// 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, +{ + 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() { + let (x, y) = implements_trait::<_, _>(); + + constrain::(x); + constrain::(y); +} 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/tests/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs b/tests/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs new file mode 100644 index 000000000000..962606508be7 --- /dev/null +++ b/tests/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() {} 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 84% 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 index 50b2dc0495d7..0c45046f5f51 100644 --- a/src/test/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/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 83% rename from src/test/ui/type-alias-impl-trait/underconstrained_generic.stderr rename to tests/ui/type-alias-impl-trait/underconstrained_generic.stderr index 95fb6f6a55ae..103636b6cdde 100644 --- a/src/test/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; 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/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`. 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 57% rename from src/test/ui/typeck/issue-57404.stderr rename to tests/ui/typeck/issue-57404.stderr index 5065ac32ad2b..a631dbb39fb8 100644 --- a/src/test/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 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 56% rename from src/test/ui/typeck/issue-87181/empty-tuple-method.rs rename to tests/ui/typeck/issue-87181/empty-tuple-method.rs index be68ad32ae55..96b3f8dab8da 100644 --- a/src/test/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/src/test/ui/typeck/issue-87181/empty-tuple-method.stderr b/tests/ui/typeck/issue-87181/empty-tuple-method.stderr similarity index 77% rename from src/test/ui/typeck/issue-87181/empty-tuple-method.stderr rename to tests/ui/typeck/issue-87181/empty-tuple-method.stderr index 23e7b7cc363f..f0ca49e6d1e3 100644 --- a/src/test/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/src/test/ui/typeck/issue-87181/enum-variant.rs b/tests/ui/typeck/issue-87181/enum-variant.rs similarity index 57% rename from src/test/ui/typeck/issue-87181/enum-variant.rs rename to tests/ui/typeck/issue-87181/enum-variant.rs index d87f99c3c5a1..ed01656ce72a 100644 --- a/src/test/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/src/test/ui/typeck/issue-87181/enum-variant.stderr b/tests/ui/typeck/issue-87181/enum-variant.stderr similarity index 76% rename from src/test/ui/typeck/issue-87181/enum-variant.stderr rename to tests/ui/typeck/issue-87181/enum-variant.stderr index 2247ea27021f..d313a887abd9 100644 --- a/src/test/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/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 55% rename from src/test/ui/typeck/issue-87181/tuple-method.rs rename to tests/ui/typeck/issue-87181/tuple-method.rs index e88f642b0707..6310984438c6 100644 --- a/src/test/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/src/test/ui/typeck/issue-87181/tuple-method.stderr b/tests/ui/typeck/issue-87181/tuple-method.stderr similarity index 68% rename from src/test/ui/typeck/issue-87181/tuple-method.stderr rename to tests/ui/typeck/issue-87181/tuple-method.stderr index e27c41858d32..de3dc15a54b1 100644 --- a/src/test/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/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 78% rename from src/test/ui/typeck/issue-96738.stderr rename to tests/ui/typeck/issue-96738.stderr index 0d4d87ef47e2..547cffffa2ee 100644 --- a/src/test/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(); 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 99% rename from src/test/ui/ufcs/ufcs-partially-resolved.stderr rename to tests/ui/ufcs/ufcs-partially-resolved.stderr index 3950dc9877cd..5f7f6aa9f6ec 100644 --- a/src/test/ui/ufcs/ufcs-partially-resolved.stderr +++ b/tests/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 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 78% rename from src/test/ui/uninhabited/uninhabited-irrefutable.rs rename to tests/ui/uninhabited/uninhabited-irrefutable.rs index 1a0f3c5e5504..4b001aca2d1c 100644 --- a/src/test/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/src/test/ui/uninhabited/uninhabited-irrefutable.stderr b/tests/ui/uninhabited/uninhabited-irrefutable.stderr similarity index 58% rename from src/test/ui/uninhabited/uninhabited-irrefutable.stderr rename to tests/ui/uninhabited/uninhabited-irrefutable.stderr index 32f287a18188..8cafea555c17 100644 --- a/src/test/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,14 @@ 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: 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/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 88% rename from src/test/ui/uninhabited/uninhabited-matches-feature-gated.stderr rename to tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr index d33a61ca8485..466d7f2eadb9 100644 --- a/src/test/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,8 @@ 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: you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(x) = x else { todo!() }; | ++++++++++++++++ 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 91% rename from src/test/ui/union/union-derive-clone.mirunsafeck.stderr rename to tests/ui/union/union-derive-clone.mirunsafeck.stderr index 65ff72fe474b..b80e8b988adb 100644 --- a/src/test/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/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 91% rename from src/test/ui/union/union-derive-clone.thirunsafeck.stderr rename to tests/ui/union/union-derive-clone.thirunsafeck.stderr index 65ff72fe474b..b80e8b988adb 100644 --- a/src/test/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)] 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 70% rename from src/test/ui/variance/variance-associated-consts.stderr rename to tests/ui/variance/variance-associated-consts.stderr index 219f5bca9e30..f9732d02cb28 100644 --- a/src/test/ui/variance/variance-associated-consts.stderr +++ b/tests/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.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 82% rename from src/test/ui/variance/variance-associated-types.stderr rename to tests/ui/variance/variance-associated-types.stderr index 94f770eda33e..5ce62884e1d8 100644 --- a/src/test/ui/variance/variance-associated-types.stderr +++ b/tests/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-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 68% rename from src/test/ui/variance/variance-object-types.stderr rename to tests/ui/variance/variance-object-types.stderr index ceee53aff105..1c3c1a6d1f22 100644 --- a/src/test/ui/variance/variance-object-types.stderr +++ b/tests/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.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 93% rename from src/test/ui/variance/variance-regions-direct.stderr rename to tests/ui/variance/variance-regions-direct.stderr index 25fb22732151..27d69b6e8257 100644 --- a/src/test/ui/variance/variance-regions-direct.stderr +++ b/tests/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.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 92% rename from src/test/ui/variance/variance-regions-indirect.stderr rename to tests/ui/variance/variance-regions-indirect.stderr index fc52492d7efd..535e97db3fb1 100644 --- a/src/test/ui/variance/variance-regions-indirect.stderr +++ b/tests/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-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 90% rename from src/test/ui/variance/variance-trait-bounds.stderr rename to tests/ui/variance/variance-trait-bounds.stderr index e3ef339f423b..3f6ca62a6406 100644 --- a/src/test/ui/variance/variance-trait-bounds.stderr +++ b/tests/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-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 70% rename from src/test/ui/variance/variance-trait-object-bound.stderr rename to tests/ui/variance/variance-trait-object-bound.stderr index c86cf1f82b45..9a2c924b96a9 100644 --- a/src/test/ui/variance/variance-trait-object-bound.stderr +++ b/tests/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.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 91% rename from src/test/ui/variance/variance-types-bounds.stderr rename to tests/ui/variance/variance-types-bounds.stderr index dbe8af75d517..523763b8a07b 100644 --- a/src/test/ui/variance/variance-types-bounds.stderr +++ b/tests/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.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 91% rename from src/test/ui/variance/variance-types.stderr rename to tests/ui/variance/variance-types.stderr index 8358b18b73ce..5a5aaecffc5e 100644 --- a/src/test/ui/variance/variance-types.stderr +++ b/tests/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/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/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`. 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 diff --git a/triagebot.toml b/triagebot.toml index 58108dac496b..914b52cf041d 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-*", @@ -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,14 +349,14 @@ cc = ["@BoxyUwU"] [mentions."compiler/rustc_trait_selection/src/solve/"] message = "Some changes occurred to the core trait solver" -cc = ["@lcnr"] +cc = ["@rust-lang/initiative-trait-system-refactor"] [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" @@ -466,6 +471,7 @@ compiler-team = [ "@lcnr", "@nagisa", "@wesleywiser", + "@michaelwoerister", ] compiler-team-contributors = [ "@compiler-errors", @@ -473,6 +479,7 @@ compiler-team-contributors = [ "@jackh726", "@TaKO8Ki", "@Nilstrieb", + "@WaffleLapkin", ] compiler = [ "compiler-team", @@ -487,12 +494,10 @@ libs = [ ] bootstrap = [ "@Mark-Simulacrum", - "@jyn514", ] infra-ci = [ "@Mark-Simulacrum", "@pietroalbini", - "@jyn514", ] rustdoc = [ "@jsha", @@ -603,7 +608,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"]