From 47b8a32ca311e2c441f4e7d747bfd75f0045baa1 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Tue, 1 Jul 2025 20:20:14 +0500 Subject: [PATCH 1/2] moved tests --- ...per-let-lifetime-and-drop.borrowck.stderr} | 26 +++++++++---------- .../super-let-lifetime-and-drop.rs} | 0 .../cast-enum-to-primitive-error.fixed} | 0 .../cast-enum-to-primitive-error.rs} | 0 .../cast-enum-to-primitive-error.stderr} | 0 .../coercion-as-explicit-cast.rs} | 0 .../coercion-as-explicit-cast.stderr} | 0 .../generic-enum-errors.rs} | 0 .../generic-enum-errors.stderr} | 0 .../module-super-access.rs} | 0 .../super-at-crate-root.rs} | 0 .../super-at-crate-root.stderr} | 0 .../syntactic-trailing-commas.rs} | 0 .../{swap-1.rs => ptr_ops/ptr-swap-basic.rs} | 0 .../ptr-swap-overlapping-regions.rs} | 0 .../recursion-tail-call-no-arg-leak.rs} | 0 .../recursion-tail-cps.rs} | 0 .../svh-no-api-change-no-recompile.rs} | 0 .../trait-method-signature-mismatch.rs} | 0 .../trait-method-signature-mismatch.stderr} | 0 .../tryfrominterror-result-comparison.rs} | 0 .../transmute-array-to-scalar.rs} | 0 .../transmute-same-associated-type.rs} | 0 .../mismatched-types-ref-binding.rs} | 0 .../mismatched-types-ref-binding.stderr} | 0 .../tail-return-type-mismatch.rs} | 0 .../tail-return-type-mismatch.stderr} | 0 27 files changed, 13 insertions(+), 13 deletions(-) rename tests/ui/{super-let.borrowck.stderr => borrowck/super-let-lifetime-and-drop.borrowck.stderr} (91%) rename tests/ui/{super-let.rs => borrowck/super-let-lifetime-and-drop.rs} (100%) rename tests/ui/{tag-variant-cast-non-nullary.fixed => cast/cast-enum-to-primitive-error.fixed} (100%) rename tests/ui/{tag-variant-cast-non-nullary.rs => cast/cast-enum-to-primitive-error.rs} (100%) rename tests/ui/{tag-variant-cast-non-nullary.stderr => cast/cast-enum-to-primitive-error.stderr} (100%) rename tests/ui/{trivial_casts-rpass.rs => cast/coercion-as-explicit-cast.rs} (100%) rename tests/ui/{trivial_casts-rpass.stderr => cast/coercion-as-explicit-cast.stderr} (100%) rename tests/ui/{tag-type-args.rs => generics/generic-enum-errors.rs} (100%) rename tests/ui/{tag-type-args.stderr => generics/generic-enum-errors.stderr} (100%) rename tests/ui/{super.rs => modules/module-super-access.rs} (100%) rename tests/ui/{super-at-top-level.rs => modules/super-at-crate-root.rs} (100%) rename tests/ui/{super-at-top-level.stderr => modules/super-at-crate-root.stderr} (100%) rename tests/ui/{trailing-comma.rs => parser/syntactic-trailing-commas.rs} (100%) rename tests/ui/{swap-1.rs => ptr_ops/ptr-swap-basic.rs} (100%) rename tests/ui/{swap-overlapping.rs => ptr_ops/ptr-swap-overlapping-regions.rs} (100%) rename tests/ui/{tail-call-arg-leak.rs => recursion/recursion-tail-call-no-arg-leak.rs} (100%) rename tests/ui/{tail-cps.rs => recursion/recursion-tail-cps.rs} (100%) rename tests/ui/{svh-add-nothing.rs => svh/svh-no-api-change-no-recompile.rs} (100%) rename tests/ui/{trait-method-number-parameters.rs => traits/trait-method-signature-mismatch.rs} (100%) rename tests/ui/{trait-method-number-parameters.stderr => traits/trait-method-signature-mismatch.stderr} (100%) rename tests/ui/{try-from-int-error-partial-eq.rs => traits/tryfrominterror-result-comparison.rs} (100%) rename tests/ui/{transmute-non-immediate-to-immediate.rs => transmute/transmute-array-to-scalar.rs} (100%) rename tests/ui/{transmute-equal-assoc-types.rs => transmute/transmute-same-associated-type.rs} (100%) rename tests/ui/{switched-expectations.rs => typeck/mismatched-types-ref-binding.rs} (100%) rename tests/ui/{switched-expectations.stderr => typeck/mismatched-types-ref-binding.stderr} (100%) rename tests/ui/{tail-typeck.rs => typeck/tail-return-type-mismatch.rs} (100%) rename tests/ui/{tail-typeck.stderr => typeck/tail-return-type-mismatch.stderr} (100%) diff --git a/tests/ui/super-let.borrowck.stderr b/tests/ui/borrowck/super-let-lifetime-and-drop.borrowck.stderr similarity index 91% rename from tests/ui/super-let.borrowck.stderr rename to tests/ui/borrowck/super-let-lifetime-and-drop.borrowck.stderr index 01ef29d875880..7fe0b47ed5741 100644 --- a/tests/ui/super-let.borrowck.stderr +++ b/tests/ui/borrowck/super-let-lifetime-and-drop.borrowck.stderr @@ -1,5 +1,5 @@ error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:30:28 + --> $DIR/super-let-lifetime-and-drop.rs:30:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here @@ -11,7 +11,7 @@ LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:46:28 + --> $DIR/super-let-lifetime-and-drop.rs:46:28 | LL | super let b = &DropMe(&mut x); | -------------- @@ -26,7 +26,7 @@ LL | } | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:64:32 + --> $DIR/super-let-lifetime-and-drop.rs:64:32 | LL | super let b = identity(&DropMe(&mut x)); | -------------- @@ -40,7 +40,7 @@ LL | }; | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:87:36 + --> $DIR/super-let-lifetime-and-drop.rs:87:36 | LL | super let b = identity(&DropMe(&mut x)); | -------------- @@ -55,7 +55,7 @@ LL | )); | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:107:28 + --> $DIR/super-let-lifetime-and-drop.rs:107:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here @@ -67,7 +67,7 @@ LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:125:28 + --> $DIR/super-let-lifetime-and-drop.rs:125:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here @@ -79,7 +79,7 @@ LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:143:28 + --> $DIR/super-let-lifetime-and-drop.rs:143:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here @@ -91,7 +91,7 @@ LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:159:28 + --> $DIR/super-let-lifetime-and-drop.rs:159:28 | LL | b = DropMe(&mut x); | ------ `x` is borrowed here @@ -102,7 +102,7 @@ LL | drop(a); | - borrow later used here error[E0716]: temporary value dropped while borrowed - --> $DIR/super-let.rs:172:33 + --> $DIR/super-let-lifetime-and-drop.rs:172:33 | LL | #[cfg(borrowck)] { a = &String::from("asdf"); }; | ^^^^^^^^^^^^^^^^^^^^- temporary value is freed at the end of this statement @@ -115,7 +115,7 @@ LL | let _ = a; = note: consider using a `let` binding to create a longer lived value error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:206:28 + --> $DIR/super-let-lifetime-and-drop.rs:206:28 | LL | super let d = &DropMe(&mut x); | -------------- @@ -130,7 +130,7 @@ LL | } | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:227:32 + --> $DIR/super-let-lifetime-and-drop.rs:227:32 | LL | super let d = identity(&DropMe(&mut x)); | -------------- @@ -145,7 +145,7 @@ LL | }; | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:246:28 + --> $DIR/super-let-lifetime-and-drop.rs:246:28 | LL | super let b = DropMe(&mut x); | ------ `x` is borrowed here @@ -157,7 +157,7 @@ LL | } | - borrow might be used here, when `b` is dropped and runs the `Drop` code for type `DropMe` error[E0506]: cannot assign to `x` because it is borrowed - --> $DIR/super-let.rs:263:28 + --> $DIR/super-let-lifetime-and-drop.rs:263:28 | LL | let dropme = Some(DropMe(&mut x)); | ------ `x` is borrowed here diff --git a/tests/ui/super-let.rs b/tests/ui/borrowck/super-let-lifetime-and-drop.rs similarity index 100% rename from tests/ui/super-let.rs rename to tests/ui/borrowck/super-let-lifetime-and-drop.rs diff --git a/tests/ui/tag-variant-cast-non-nullary.fixed b/tests/ui/cast/cast-enum-to-primitive-error.fixed similarity index 100% rename from tests/ui/tag-variant-cast-non-nullary.fixed rename to tests/ui/cast/cast-enum-to-primitive-error.fixed diff --git a/tests/ui/tag-variant-cast-non-nullary.rs b/tests/ui/cast/cast-enum-to-primitive-error.rs similarity index 100% rename from tests/ui/tag-variant-cast-non-nullary.rs rename to tests/ui/cast/cast-enum-to-primitive-error.rs diff --git a/tests/ui/tag-variant-cast-non-nullary.stderr b/tests/ui/cast/cast-enum-to-primitive-error.stderr similarity index 100% rename from tests/ui/tag-variant-cast-non-nullary.stderr rename to tests/ui/cast/cast-enum-to-primitive-error.stderr diff --git a/tests/ui/trivial_casts-rpass.rs b/tests/ui/cast/coercion-as-explicit-cast.rs similarity index 100% rename from tests/ui/trivial_casts-rpass.rs rename to tests/ui/cast/coercion-as-explicit-cast.rs diff --git a/tests/ui/trivial_casts-rpass.stderr b/tests/ui/cast/coercion-as-explicit-cast.stderr similarity index 100% rename from tests/ui/trivial_casts-rpass.stderr rename to tests/ui/cast/coercion-as-explicit-cast.stderr diff --git a/tests/ui/tag-type-args.rs b/tests/ui/generics/generic-enum-errors.rs similarity index 100% rename from tests/ui/tag-type-args.rs rename to tests/ui/generics/generic-enum-errors.rs diff --git a/tests/ui/tag-type-args.stderr b/tests/ui/generics/generic-enum-errors.stderr similarity index 100% rename from tests/ui/tag-type-args.stderr rename to tests/ui/generics/generic-enum-errors.stderr diff --git a/tests/ui/super.rs b/tests/ui/modules/module-super-access.rs similarity index 100% rename from tests/ui/super.rs rename to tests/ui/modules/module-super-access.rs diff --git a/tests/ui/super-at-top-level.rs b/tests/ui/modules/super-at-crate-root.rs similarity index 100% rename from tests/ui/super-at-top-level.rs rename to tests/ui/modules/super-at-crate-root.rs diff --git a/tests/ui/super-at-top-level.stderr b/tests/ui/modules/super-at-crate-root.stderr similarity index 100% rename from tests/ui/super-at-top-level.stderr rename to tests/ui/modules/super-at-crate-root.stderr diff --git a/tests/ui/trailing-comma.rs b/tests/ui/parser/syntactic-trailing-commas.rs similarity index 100% rename from tests/ui/trailing-comma.rs rename to tests/ui/parser/syntactic-trailing-commas.rs diff --git a/tests/ui/swap-1.rs b/tests/ui/ptr_ops/ptr-swap-basic.rs similarity index 100% rename from tests/ui/swap-1.rs rename to tests/ui/ptr_ops/ptr-swap-basic.rs diff --git a/tests/ui/swap-overlapping.rs b/tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs similarity index 100% rename from tests/ui/swap-overlapping.rs rename to tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs diff --git a/tests/ui/tail-call-arg-leak.rs b/tests/ui/recursion/recursion-tail-call-no-arg-leak.rs similarity index 100% rename from tests/ui/tail-call-arg-leak.rs rename to tests/ui/recursion/recursion-tail-call-no-arg-leak.rs diff --git a/tests/ui/tail-cps.rs b/tests/ui/recursion/recursion-tail-cps.rs similarity index 100% rename from tests/ui/tail-cps.rs rename to tests/ui/recursion/recursion-tail-cps.rs diff --git a/tests/ui/svh-add-nothing.rs b/tests/ui/svh/svh-no-api-change-no-recompile.rs similarity index 100% rename from tests/ui/svh-add-nothing.rs rename to tests/ui/svh/svh-no-api-change-no-recompile.rs diff --git a/tests/ui/trait-method-number-parameters.rs b/tests/ui/traits/trait-method-signature-mismatch.rs similarity index 100% rename from tests/ui/trait-method-number-parameters.rs rename to tests/ui/traits/trait-method-signature-mismatch.rs diff --git a/tests/ui/trait-method-number-parameters.stderr b/tests/ui/traits/trait-method-signature-mismatch.stderr similarity index 100% rename from tests/ui/trait-method-number-parameters.stderr rename to tests/ui/traits/trait-method-signature-mismatch.stderr diff --git a/tests/ui/try-from-int-error-partial-eq.rs b/tests/ui/traits/tryfrominterror-result-comparison.rs similarity index 100% rename from tests/ui/try-from-int-error-partial-eq.rs rename to tests/ui/traits/tryfrominterror-result-comparison.rs diff --git a/tests/ui/transmute-non-immediate-to-immediate.rs b/tests/ui/transmute/transmute-array-to-scalar.rs similarity index 100% rename from tests/ui/transmute-non-immediate-to-immediate.rs rename to tests/ui/transmute/transmute-array-to-scalar.rs diff --git a/tests/ui/transmute-equal-assoc-types.rs b/tests/ui/transmute/transmute-same-associated-type.rs similarity index 100% rename from tests/ui/transmute-equal-assoc-types.rs rename to tests/ui/transmute/transmute-same-associated-type.rs diff --git a/tests/ui/switched-expectations.rs b/tests/ui/typeck/mismatched-types-ref-binding.rs similarity index 100% rename from tests/ui/switched-expectations.rs rename to tests/ui/typeck/mismatched-types-ref-binding.rs diff --git a/tests/ui/switched-expectations.stderr b/tests/ui/typeck/mismatched-types-ref-binding.stderr similarity index 100% rename from tests/ui/switched-expectations.stderr rename to tests/ui/typeck/mismatched-types-ref-binding.stderr diff --git a/tests/ui/tail-typeck.rs b/tests/ui/typeck/tail-return-type-mismatch.rs similarity index 100% rename from tests/ui/tail-typeck.rs rename to tests/ui/typeck/tail-return-type-mismatch.rs diff --git a/tests/ui/tail-typeck.stderr b/tests/ui/typeck/tail-return-type-mismatch.stderr similarity index 100% rename from tests/ui/tail-typeck.stderr rename to tests/ui/typeck/tail-return-type-mismatch.stderr From 98934707eb7824cd48ee3889d4570c1406c39ba4 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Tue, 1 Jul 2025 20:20:14 +0500 Subject: [PATCH 2/2] cleaned up some tests Additionally, remove unused `tests/ui/auxiliary/svh-*` crates that are duplicates of `tests/ui/svh/auxiliary/svh-*`. --- tests/ui/auxiliary/svh-a-base.rs | 25 ------------------- tests/ui/auxiliary/svh-b.rs | 13 ---------- .../cast/cast-enum-to-primitive-error.fixed | 9 ++++++- tests/ui/cast/cast-enum-to-primitive-error.rs | 9 ++++++- .../cast/cast-enum-to-primitive-error.stderr | 2 +- tests/ui/cast/coercion-as-explicit-cast.rs | 4 ++- .../ui/cast/coercion-as-explicit-cast.stderr | 2 +- tests/ui/generics/generic-enum-errors.rs | 17 ++++++++++--- tests/ui/generics/generic-enum-errors.stderr | 14 +++++------ tests/ui/modules/module-super-access.rs | 7 +++--- tests/ui/modules/super-at-crate-root.rs | 6 +++-- tests/ui/modules/super-at-crate-root.stderr | 2 +- tests/ui/parser/syntactic-trailing-commas.rs | 8 ++++++ tests/ui/ptr_ops/ptr-swap-basic.rs | 6 ++++- .../ptr_ops/ptr-swap-overlapping-regions.rs | 16 ++++++------ .../recursion-tail-call-no-arg-leak.rs | 11 ++++++-- tests/ui/recursion/recursion-tail-cps.rs | 25 ++++++++++++++++--- .../ui/svh/svh-no-api-change-no-recompile.rs | 11 ++++++-- .../traits/trait-method-signature-mismatch.rs | 7 +++++- .../trait-method-signature-mismatch.stderr | 2 +- .../tryfrominterror-result-comparison.rs | 9 ++++++- .../ui/transmute/transmute-array-to-scalar.rs | 14 +++++++---- .../transmute-same-associated-type.rs | 2 ++ .../ui/typeck/mismatched-types-ref-binding.rs | 4 +++ .../mismatched-types-ref-binding.stderr | 2 +- tests/ui/typeck/tail-return-type-mismatch.rs | 15 ++++++++--- .../typeck/tail-return-type-mismatch.stderr | 14 +++++------ 27 files changed, 160 insertions(+), 96 deletions(-) delete mode 100644 tests/ui/auxiliary/svh-a-base.rs delete mode 100644 tests/ui/auxiliary/svh-b.rs diff --git a/tests/ui/auxiliary/svh-a-base.rs b/tests/ui/auxiliary/svh-a-base.rs deleted file mode 100644 index 36b41fc818ff8..0000000000000 --- a/tests/ui/auxiliary/svh-a-base.rs +++ /dev/null @@ -1,25 +0,0 @@ -//! The `svh-a-*.rs` files are all deviations from the base file -//! svh-a-base.rs with some difference (usually in `fn foo`) that -//! should not affect the strict version hash (SVH) computation -//! (#14132). - -#![crate_name = "a"] - -macro_rules! three { - () => { 3 } -} - -pub trait U {} -pub trait V {} -impl U for () {} -impl V for () {} - -static A_CONSTANT : isize = 2; - -pub fn foo(_: isize) -> isize { - 3 -} - -pub fn an_unused_name() -> isize { - 4 -} diff --git a/tests/ui/auxiliary/svh-b.rs b/tests/ui/auxiliary/svh-b.rs deleted file mode 100644 index 57029f70888b3..0000000000000 --- a/tests/ui/auxiliary/svh-b.rs +++ /dev/null @@ -1,13 +0,0 @@ -//! This is a client of the `a` crate defined in `svn-a-base.rs`. The -//! rpass and cfail tests (such as `run-pass/svh-add-comment.rs`) use -//! it by swapping in a different object code library crate built from -//! some variant of `svn-a-base.rs`, and then we are checking if the -//! compiler properly ignores or accepts the change, based on whether -//! the change could affect the downstream crate content or not -//! (#14132). - -#![crate_name = "b"] - -extern crate a; - -pub fn foo() { assert_eq!(a::foo::<()>(0), 3); } diff --git a/tests/ui/cast/cast-enum-to-primitive-error.fixed b/tests/ui/cast/cast-enum-to-primitive-error.fixed index 7e22116b955db..4d447c81ac9d2 100644 --- a/tests/ui/cast/cast-enum-to-primitive-error.fixed +++ b/tests/ui/cast/cast-enum-to-primitive-error.fixed @@ -1,5 +1,10 @@ +//! This test verifies that a direct non-primitive cast from an enum to an integer type +//! is correctly disallowed, even when a `From` implementation exists for that enum. + //@ run-rustfix + #![allow(dead_code, unused_variables)] + enum NonNullary { Nullary, Other(isize), @@ -16,5 +21,7 @@ impl From for isize { fn main() { let v = NonNullary::Nullary; - let val = isize::from(v); //~ ERROR non-primitive cast: `NonNullary` as `isize` [E0605] + let val = isize::from(v); + //~^ ERROR non-primitive cast: `NonNullary` as `isize` [E0605] + //~| HELP consider using the `From` trait instead } diff --git a/tests/ui/cast/cast-enum-to-primitive-error.rs b/tests/ui/cast/cast-enum-to-primitive-error.rs index 1a64cf1933de6..fdbe63b9bc73f 100644 --- a/tests/ui/cast/cast-enum-to-primitive-error.rs +++ b/tests/ui/cast/cast-enum-to-primitive-error.rs @@ -1,5 +1,10 @@ +//! This test verifies that a direct non-primitive cast from an enum to an integer type +//! is correctly disallowed, even when a `From` implementation exists for that enum. + //@ run-rustfix + #![allow(dead_code, unused_variables)] + enum NonNullary { Nullary, Other(isize), @@ -16,5 +21,7 @@ impl From for isize { fn main() { let v = NonNullary::Nullary; - let val = v as isize; //~ ERROR non-primitive cast: `NonNullary` as `isize` [E0605] + let val = v as isize; + //~^ ERROR non-primitive cast: `NonNullary` as `isize` [E0605] + //~| HELP consider using the `From` trait instead } diff --git a/tests/ui/cast/cast-enum-to-primitive-error.stderr b/tests/ui/cast/cast-enum-to-primitive-error.stderr index 8ec1c5f11ec27..692e5c19e0621 100644 --- a/tests/ui/cast/cast-enum-to-primitive-error.stderr +++ b/tests/ui/cast/cast-enum-to-primitive-error.stderr @@ -1,5 +1,5 @@ error[E0605]: non-primitive cast: `NonNullary` as `isize` - --> $DIR/tag-variant-cast-non-nullary.rs:19:15 + --> $DIR/cast-enum-to-primitive-error.rs:24:15 | LL | let val = v as isize; | ^^^^^^^^^^ an `as` expression can be used to convert enum types to numeric types only if the enum type is unit-only or field-less diff --git a/tests/ui/cast/coercion-as-explicit-cast.rs b/tests/ui/cast/coercion-as-explicit-cast.rs index 701e2f6166f39..b99f5d93478cc 100644 --- a/tests/ui/cast/coercion-as-explicit-cast.rs +++ b/tests/ui/cast/coercion-as-explicit-cast.rs @@ -1,5 +1,7 @@ +//! This test checks that various forms of "trivial" casts and coercions +//! can be explicitly performed using the `as` keyword without compilation errors. + //@ run-pass -// Test that all coercions can actually be done using casts (modulo the lints). #![allow(trivial_casts, trivial_numeric_casts)] diff --git a/tests/ui/cast/coercion-as-explicit-cast.stderr b/tests/ui/cast/coercion-as-explicit-cast.stderr index 74698b61ab4a4..d66298c7d44b3 100644 --- a/tests/ui/cast/coercion-as-explicit-cast.stderr +++ b/tests/ui/cast/coercion-as-explicit-cast.stderr @@ -1,5 +1,5 @@ warning: method `foo` is never used - --> $DIR/trivial_casts-rpass.rs:7:8 + --> $DIR/coercion-as-explicit-cast.rs:9:8 | LL | trait Foo { | --- method in this trait diff --git a/tests/ui/generics/generic-enum-errors.rs b/tests/ui/generics/generic-enum-errors.rs index 75a54927443f2..111f56351686a 100644 --- a/tests/ui/generics/generic-enum-errors.rs +++ b/tests/ui/generics/generic-enum-errors.rs @@ -1,6 +1,15 @@ -enum Quux { Bar } -//~^ ERROR: parameter `T` is never used +//! This test checks that unused generics are rejected by compiler -fn foo(c: Quux) { assert!((false)); } //~ ERROR missing generics for enum `Quux` +enum Quux { + //~^ ERROR: parameter `T` is never used + Bar, +} -fn main() { panic!(); } +fn foo(c: Quux) { + //~^ ERROR missing generics for enum `Quux` + assert!((false)); +} + +fn main() { + panic!(); +} diff --git a/tests/ui/generics/generic-enum-errors.stderr b/tests/ui/generics/generic-enum-errors.stderr index def13832e1ae0..47a8badbd5da4 100644 --- a/tests/ui/generics/generic-enum-errors.stderr +++ b/tests/ui/generics/generic-enum-errors.stderr @@ -1,26 +1,26 @@ error[E0392]: type parameter `T` is never used - --> $DIR/tag-type-args.rs:1:11 + --> $DIR/generic-enum-errors.rs:3:11 | -LL | enum Quux { Bar } +LL | enum Quux { | ^ unused type parameter | = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` = help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead error[E0107]: missing generics for enum `Quux` - --> $DIR/tag-type-args.rs:4:11 + --> $DIR/generic-enum-errors.rs:8:11 | -LL | fn foo(c: Quux) { assert!((false)); } +LL | fn foo(c: Quux) { | ^^^^ expected 1 generic argument | note: enum defined here, with 1 generic parameter: `T` - --> $DIR/tag-type-args.rs:1:6 + --> $DIR/generic-enum-errors.rs:3:6 | -LL | enum Quux { Bar } +LL | enum Quux { | ^^^^ - help: add missing generic argument | -LL | fn foo(c: Quux) { assert!((false)); } +LL | fn foo(c: Quux) { | +++ error: aborting due to 2 previous errors diff --git a/tests/ui/modules/module-super-access.rs b/tests/ui/modules/module-super-access.rs index 69aff4f98e004..8acba607f6c06 100644 --- a/tests/ui/modules/module-super-access.rs +++ b/tests/ui/modules/module-super-access.rs @@ -1,3 +1,5 @@ +//! Check path resolution using `super` + //@ run-pass #![allow(dead_code)] @@ -6,10 +8,9 @@ pub mod a { pub fn f() {} pub mod b { fn g() { - super::f(); + super::f(); // Accessing `f` from module `a` (parent of `b`) } } } -pub fn main() { -} +pub fn main() {} diff --git a/tests/ui/modules/super-at-crate-root.rs b/tests/ui/modules/super-at-crate-root.rs index e4d587bc9effa..d605dc0cccb33 100644 --- a/tests/ui/modules/super-at-crate-root.rs +++ b/tests/ui/modules/super-at-crate-root.rs @@ -1,4 +1,6 @@ +//! Check that `super` keyword used at the crate root (top-level) results in a compilation error +//! as there is no parent module to resolve. + use super::f; //~ ERROR there are too many leading `super` keywords -fn main() { -} +fn main() {} diff --git a/tests/ui/modules/super-at-crate-root.stderr b/tests/ui/modules/super-at-crate-root.stderr index 4dce81fbef43f..0279870886467 100644 --- a/tests/ui/modules/super-at-crate-root.stderr +++ b/tests/ui/modules/super-at-crate-root.stderr @@ -1,5 +1,5 @@ error[E0433]: failed to resolve: there are too many leading `super` keywords - --> $DIR/super-at-top-level.rs:1:5 + --> $DIR/super-at-crate-root.rs:4:5 | LL | use super::f; | ^^^^^ there are too many leading `super` keywords diff --git a/tests/ui/parser/syntactic-trailing-commas.rs b/tests/ui/parser/syntactic-trailing-commas.rs index 53b76fb60374a..ba688dffb3c46 100644 --- a/tests/ui/parser/syntactic-trailing-commas.rs +++ b/tests/ui/parser/syntactic-trailing-commas.rs @@ -1,3 +1,11 @@ +//! Checks trailing commas are accepted in various places: +//! - Generic parameters in function and struct definitions. +//! - Function and method arguments. +//! - Tuple and array literal expressions. +//! - Tuple and array destructuring patterns, including those with `..`. +//! - Enum variant declarations. +//! - Attributes. + //@ run-pass fn f(_: T,) {} diff --git a/tests/ui/ptr_ops/ptr-swap-basic.rs b/tests/ui/ptr_ops/ptr-swap-basic.rs index b104c3ade42d7..ce230feeb32a3 100644 --- a/tests/ui/ptr_ops/ptr-swap-basic.rs +++ b/tests/ui/ptr_ops/ptr-swap-basic.rs @@ -1,9 +1,13 @@ +//! Check the basic functionality of `std::mem::swap` to ensure it correctly +//! exchanges the values of two mutable variables. + //@ run-pass use std::mem::swap; pub fn main() { - let mut x = 3; let mut y = 7; + let mut x = 3; + let mut y = 7; swap(&mut x, &mut y); assert_eq!(x, 7); assert_eq!(y, 3); diff --git a/tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs b/tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs index 38d5a8109d1cd..8f05e937d5941 100644 --- a/tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs +++ b/tests/ui/ptr_ops/ptr-swap-overlapping-regions.rs @@ -1,17 +1,17 @@ +//! Check that `std::ptr::swap` behaves correctly when the source and destination +//! pointers refer to the same memory location, avoiding issues like overlapping `memcpy`. +//! +//! Regression test: + //@ run-pass #![allow(dead_code)] -// Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same - use std::ptr; pub fn main() { let mut test = TestDescAndFn { - desc: TestDesc { - name: TestName::DynTestName("test".to_string()), - should_fail: false - }, + desc: TestDesc { name: TestName::DynTestName("test".to_string()), should_fail: false }, testfn: TestFn::DynTestFn(22), }; do_swap(&mut test); @@ -24,7 +24,7 @@ fn do_swap(test: &mut TestDescAndFn) { } pub enum TestName { - DynTestName(String) + DynTestName(String), } pub enum TestFn { @@ -34,7 +34,7 @@ pub enum TestFn { pub struct TestDesc { name: TestName, - should_fail: bool + should_fail: bool, } pub struct TestDescAndFn { diff --git a/tests/ui/recursion/recursion-tail-call-no-arg-leak.rs b/tests/ui/recursion/recursion-tail-call-no-arg-leak.rs index 234924307c3f6..fe10b8907006e 100644 --- a/tests/ui/recursion/recursion-tail-call-no-arg-leak.rs +++ b/tests/ui/recursion/recursion-tail-call-no-arg-leak.rs @@ -1,7 +1,14 @@ +//! This test verifies that tail call optimization does not lead to argument slot leaks. +//! +//! Regression test for: + //@ run-pass -// use of tail calls causes arg slot leaks, issue #160. -fn inner(dummy: String, b: bool) { if b { return inner(dummy, false); } } +fn inner(dummy: String, b: bool) { + if b { + return inner(dummy, false); + } +} pub fn main() { inner("hi".to_string(), true); diff --git a/tests/ui/recursion/recursion-tail-cps.rs b/tests/ui/recursion/recursion-tail-cps.rs index fe99dadf7951c..9014be0ce98a2 100644 --- a/tests/ui/recursion/recursion-tail-cps.rs +++ b/tests/ui/recursion/recursion-tail-cps.rs @@ -1,17 +1,34 @@ +//! Verify that mutually recursive functions use CPS to avoid overflowing the stack. + //@ run-pass -fn checktrue(rs: bool) -> bool { assert!(rs); return true; } +fn checktrue(rs: bool) -> bool { + assert!(rs); + return true; +} -pub fn main() { let k = checktrue; evenk(42, k); oddk(45, k); } +pub fn main() { + let k = checktrue; + evenk(42, k); + oddk(45, k); +} fn evenk(n: isize, k: fn(bool) -> bool) -> bool { println!("evenk"); println!("{}", n); - if n == 0 { return k(true); } else { return oddk(n - 1, k); } + if n == 0 { + return k(true); + } else { + return oddk(n - 1, k); + } } fn oddk(n: isize, k: fn(bool) -> bool) -> bool { println!("oddk"); println!("{}", n); - if n == 0 { return k(false); } else { return evenk(n - 1, k); } + if n == 0 { + return k(false); + } else { + return evenk(n - 1, k); + } } diff --git a/tests/ui/svh/svh-no-api-change-no-recompile.rs b/tests/ui/svh/svh-no-api-change-no-recompile.rs index 6e4b9fa7f4c9f..d4b8ac77444f8 100644 --- a/tests/ui/svh/svh-no-api-change-no-recompile.rs +++ b/tests/ui/svh/svh-no-api-change-no-recompile.rs @@ -1,10 +1,17 @@ +//! This test verifies that the Signature Version Hash (SVH) system correctly identifies +//! when changes to an auxiliary crate do not affect its public API. +//! +//! Specifically, it checks that adding non-public items to a crate does not alter +//! its SVH, preventing unnecessary recompilations of dependent crates. + //@ run-pass -// note that these aux-build directives must be in this order + +// Note that these aux-build directives must be in this order + //@ aux-build:svh-a-base.rs //@ aux-build:svh-b.rs //@ aux-build:svh-a-base.rs - extern crate a; extern crate b; diff --git a/tests/ui/traits/trait-method-signature-mismatch.rs b/tests/ui/traits/trait-method-signature-mismatch.rs index 719005d664387..118aff69e4e6b 100644 --- a/tests/ui/traits/trait-method-signature-mismatch.rs +++ b/tests/ui/traits/trait-method-signature-mismatch.rs @@ -1,10 +1,15 @@ +//! This test verifies that implementing a trait method with a signature that does not +//! exactly match its declaration in the trait results in a compilation error. +//! Specifically, it checks for errors when the number of parameters or the return type +//! in the `impl` differs from the trait definition. + trait Foo { fn foo(&mut self, x: i32, y: i32) -> i32; } impl Foo for i32 { fn foo( - &mut self, //~ ERROR + &mut self, //~ ERROR method `foo` has 2 parameters but the declaration x: i32, ) { } diff --git a/tests/ui/traits/trait-method-signature-mismatch.stderr b/tests/ui/traits/trait-method-signature-mismatch.stderr index cf9b4f2ae7913..c7a77aa7aba1d 100644 --- a/tests/ui/traits/trait-method-signature-mismatch.stderr +++ b/tests/ui/traits/trait-method-signature-mismatch.stderr @@ -1,5 +1,5 @@ error[E0050]: method `foo` has 2 parameters but the declaration in trait `Foo::foo` has 3 - --> $DIR/trait-method-number-parameters.rs:7:9 + --> $DIR/trait-method-signature-mismatch.rs:12:9 | LL | fn foo(&mut self, x: i32, y: i32) -> i32; | ------------------------- trait requires 3 parameters diff --git a/tests/ui/traits/tryfrominterror-result-comparison.rs b/tests/ui/traits/tryfrominterror-result-comparison.rs index 66a78b3f842fb..8a2741e9058e4 100644 --- a/tests/ui/traits/tryfrominterror-result-comparison.rs +++ b/tests/ui/traits/tryfrominterror-result-comparison.rs @@ -1,12 +1,19 @@ +//! This test verifies that `std::num::TryFromIntError` correctly implements `PartialEq`, +//! allowing `Result` values to be compared for equality using `==`. +//! It specifically checks a successful numeric conversion scenario where the `Result::Ok` +//! variant is compared, ensuring that the comparison yields the expected boolean result. + //@ run-pass -#![allow(unused_must_use)] +#![allow(unused_must_use)] // Allow ignoring the result of the comparison for the test's purpose use std::convert::TryFrom; use std::num::TryFromIntError; fn main() { let x: u32 = 125; + // Attempt to convert u32 to u8, which should succeed as 125 fits in u8. let y: Result = u8::try_from(x); + // Verify that the Result can be correctly compared with an Ok value. y == Ok(125); } diff --git a/tests/ui/transmute/transmute-array-to-scalar.rs b/tests/ui/transmute/transmute-array-to-scalar.rs index d99bbcc600fd4..cd6dbb040c8bb 100644 --- a/tests/ui/transmute/transmute-array-to-scalar.rs +++ b/tests/ui/transmute/transmute-array-to-scalar.rs @@ -1,10 +1,14 @@ -//@ run-pass -// Issue #7988 -// Transmuting non-immediate type to immediate type +//! Verify transmuting from a single-element array to a scalar is allowed. +//! +//! Regression test: +//@ run-pass pub fn main() { unsafe { - ::std::mem::transmute::<[isize; 1],isize>([1]) - }; + // Transmute a single-element array `[1]` (which might be treated as a "non-immediate" type) + // to a scalar `isize` (an "immediate" type). + // This is safe because `[isize; 1]` and `isize` have the same size and alignment. + ::std::mem::transmute::<[isize; 1], isize>([1]); + } } diff --git a/tests/ui/transmute/transmute-same-associated-type.rs b/tests/ui/transmute/transmute-same-associated-type.rs index 526f4ebbffa3e..8bc452c6df4f6 100644 --- a/tests/ui/transmute/transmute-same-associated-type.rs +++ b/tests/ui/transmute/transmute-same-associated-type.rs @@ -1,3 +1,5 @@ +//! Verify transmuting is allowed when `Src` and `Dst` are the same associated type. + //@ check-pass trait Foo { diff --git a/tests/ui/typeck/mismatched-types-ref-binding.rs b/tests/ui/typeck/mismatched-types-ref-binding.rs index c5bc84de54c48..baf9056dfebc2 100644 --- a/tests/ui/typeck/mismatched-types-ref-binding.rs +++ b/tests/ui/typeck/mismatched-types-ref-binding.rs @@ -1,3 +1,7 @@ +//! Check that a `mismatched types` error (E0308) is correctly reported when attempting to +//! bind a reference to an `i32` to a reference to a `String`. +//! Ensure `ref` bindings report a mismatched type error. + fn main() { let var = 10i32; let ref string: String = var; //~ ERROR mismatched types [E0308] diff --git a/tests/ui/typeck/mismatched-types-ref-binding.stderr b/tests/ui/typeck/mismatched-types-ref-binding.stderr index e235c2da1f736..c08e5d2a60b52 100644 --- a/tests/ui/typeck/mismatched-types-ref-binding.stderr +++ b/tests/ui/typeck/mismatched-types-ref-binding.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/switched-expectations.rs:3:30 + --> $DIR/mismatched-types-ref-binding.rs:7:30 | LL | let ref string: String = var; | ^^^ expected `String`, found `i32` diff --git a/tests/ui/typeck/tail-return-type-mismatch.rs b/tests/ui/typeck/tail-return-type-mismatch.rs index 1deb43c94965b..fa0d205ad8292 100644 --- a/tests/ui/typeck/tail-return-type-mismatch.rs +++ b/tests/ui/typeck/tail-return-type-mismatch.rs @@ -1,5 +1,14 @@ -fn f() -> isize { return g(); } //~ ERROR mismatched types +//! Test for type mismatch error when returning `usize` from `isize` function. -fn g() -> usize { return 0; } +fn f() -> isize { + return g(); + //~^ ERROR mismatched types [E0308] +} -fn main() { let y = f(); } +fn g() -> usize { + return 0; +} + +fn main() { + let y = f(); +} diff --git a/tests/ui/typeck/tail-return-type-mismatch.stderr b/tests/ui/typeck/tail-return-type-mismatch.stderr index 3cfbfa0fb562e..36da65d030449 100644 --- a/tests/ui/typeck/tail-return-type-mismatch.stderr +++ b/tests/ui/typeck/tail-return-type-mismatch.stderr @@ -1,15 +1,15 @@ error[E0308]: mismatched types - --> $DIR/tail-typeck.rs:1:26 + --> $DIR/tail-return-type-mismatch.rs:4:12 | -LL | fn f() -> isize { return g(); } - | ----- ^^^ expected `isize`, found `usize` - | | - | expected `isize` because of return type +LL | fn f() -> isize { + | ----- expected `isize` because of return type +LL | return g(); + | ^^^ expected `isize`, found `usize` | help: you can convert a `usize` to an `isize` and panic if the converted value doesn't fit | -LL | fn f() -> isize { return g().try_into().unwrap(); } - | ++++++++++++++++++++ +LL | return g().try_into().unwrap(); + | ++++++++++++++++++++ error: aborting due to 1 previous error