From 3d81af8c55cd422910c4560f6cdc03722f4530c7 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Sat, 28 Jun 2025 22:57:01 +0500 Subject: [PATCH 1/2] moved tests --- .../maximal-hir-to-mir-coverage-flag.rs} | 0 .../missing-debug-implementations-lint.rs} | 0 .../missing-debug-implementations-lint.stderr} | 0 .../fn-pointer-mismatch-diagnostics.rs} | 0 .../fn-pointer-mismatch-diagnostics.stderr} | 0 .../maybe-trait-bounds-forbidden-locations.rs} | 0 .../maybe-trait-bounds-forbidden-locations.stderr} | 0 .../module-type-args-error.rs} | 0 .../module-type-args-error.stderr} | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename tests/ui/{maximal_mir_to_hir_coverage.rs => codegen/maximal-hir-to-mir-coverage-flag.rs} (100%) rename tests/ui/{missing_debug_impls.rs => lint/missing-debug-implementations-lint.rs} (100%) rename tests/ui/{missing_debug_impls.stderr => lint/missing-debug-implementations-lint.stderr} (100%) rename tests/ui/{method-output-diff-issue-127263.rs => mismatched_types/fn-pointer-mismatch-diagnostics.rs} (100%) rename tests/ui/{method-output-diff-issue-127263.stderr => mismatched_types/fn-pointer-mismatch-diagnostics.stderr} (100%) rename tests/ui/{maybe-bounds.rs => traits/maybe-trait-bounds-forbidden-locations.rs} (100%) rename tests/ui/{maybe-bounds.stderr => traits/maybe-trait-bounds-forbidden-locations.stderr} (100%) rename tests/ui/{mod-subitem-as-enum-variant.rs => type-alias-enum-variants/module-type-args-error.rs} (100%) rename tests/ui/{mod-subitem-as-enum-variant.stderr => type-alias-enum-variants/module-type-args-error.stderr} (100%) diff --git a/tests/ui/maximal_mir_to_hir_coverage.rs b/tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs similarity index 100% rename from tests/ui/maximal_mir_to_hir_coverage.rs rename to tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs diff --git a/tests/ui/missing_debug_impls.rs b/tests/ui/lint/missing-debug-implementations-lint.rs similarity index 100% rename from tests/ui/missing_debug_impls.rs rename to tests/ui/lint/missing-debug-implementations-lint.rs diff --git a/tests/ui/missing_debug_impls.stderr b/tests/ui/lint/missing-debug-implementations-lint.stderr similarity index 100% rename from tests/ui/missing_debug_impls.stderr rename to tests/ui/lint/missing-debug-implementations-lint.stderr diff --git a/tests/ui/method-output-diff-issue-127263.rs b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs similarity index 100% rename from tests/ui/method-output-diff-issue-127263.rs rename to tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs diff --git a/tests/ui/method-output-diff-issue-127263.stderr b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr similarity index 100% rename from tests/ui/method-output-diff-issue-127263.stderr rename to tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr diff --git a/tests/ui/maybe-bounds.rs b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs similarity index 100% rename from tests/ui/maybe-bounds.rs rename to tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs diff --git a/tests/ui/maybe-bounds.stderr b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr similarity index 100% rename from tests/ui/maybe-bounds.stderr rename to tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr diff --git a/tests/ui/mod-subitem-as-enum-variant.rs b/tests/ui/type-alias-enum-variants/module-type-args-error.rs similarity index 100% rename from tests/ui/mod-subitem-as-enum-variant.rs rename to tests/ui/type-alias-enum-variants/module-type-args-error.rs diff --git a/tests/ui/mod-subitem-as-enum-variant.stderr b/tests/ui/type-alias-enum-variants/module-type-args-error.stderr similarity index 100% rename from tests/ui/mod-subitem-as-enum-variant.stderr rename to tests/ui/type-alias-enum-variants/module-type-args-error.stderr From c240566561b1b819e102618dcf9347b1745f3c92 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Sat, 28 Jun 2025 22:59:17 +0500 Subject: [PATCH 2/2] cleaned up some tests --- tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs | 12 +++++++----- tests/ui/lint/missing-debug-implementations-lint.rs | 8 +++++--- .../lint/missing-debug-implementations-lint.stderr | 6 +++--- .../fn-pointer-mismatch-diagnostics.rs | 8 ++++++++ .../fn-pointer-mismatch-diagnostics.stderr | 4 ++-- .../traits/maybe-trait-bounds-forbidden-locations.rs | 9 +++++++++ .../maybe-trait-bounds-forbidden-locations.stderr | 6 +++--- .../module-type-args-error.rs | 7 +++++++ .../module-type-args-error.stderr | 2 +- 9 files changed, 45 insertions(+), 17 deletions(-) diff --git a/tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs b/tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs index e57c83d007e07..64c31beba28c9 100644 --- a/tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs +++ b/tests/ui/codegen/maximal-hir-to-mir-coverage-flag.rs @@ -1,10 +1,12 @@ +//! Test that -Z maximal-hir-to-mir-coverage flag is accepted. +//! +//! Original PR: https://github.com/rust-lang/rust/pull/105286 + //@ compile-flags: -Zmaximal-hir-to-mir-coverage //@ run-pass -// Just making sure this flag is accepted and doesn't crash the compiler - fn main() { - let x = 1; - let y = x + 1; - println!("{y}"); + let x = 1; + let y = x + 1; + println!("{y}"); } diff --git a/tests/ui/lint/missing-debug-implementations-lint.rs b/tests/ui/lint/missing-debug-implementations-lint.rs index 3abc0706887b7..8a93f052f9c82 100644 --- a/tests/ui/lint/missing-debug-implementations-lint.rs +++ b/tests/ui/lint/missing-debug-implementations-lint.rs @@ -1,3 +1,7 @@ +//! Test the `missing_debug_implementations` lint that warns about public types without Debug. +//! +//! See https://github.com/rust-lang/rust/issues/20855 + //@ compile-flags: --crate-type lib #![deny(missing_debug_implementations)] #![allow(unused)] @@ -10,7 +14,6 @@ pub enum A {} //~ ERROR type does not implement `Debug` pub enum B {} pub enum C {} - impl fmt::Debug for C { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { Ok(()) @@ -23,15 +26,14 @@ pub struct Foo; //~ ERROR type does not implement `Debug` pub struct Bar; pub struct Baz; - impl fmt::Debug for Baz { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { Ok(()) } } +// Private types should not trigger the lint struct PrivateStruct; - enum PrivateEnum {} #[derive(Debug)] diff --git a/tests/ui/lint/missing-debug-implementations-lint.stderr b/tests/ui/lint/missing-debug-implementations-lint.stderr index 0538f207b4443..288ab981034e9 100644 --- a/tests/ui/lint/missing-debug-implementations-lint.stderr +++ b/tests/ui/lint/missing-debug-implementations-lint.stderr @@ -1,17 +1,17 @@ error: type does not implement `Debug`; consider adding `#[derive(Debug)]` or a manual implementation - --> $DIR/missing_debug_impls.rs:7:1 + --> $DIR/missing-debug-implementations-lint.rs:11:1 | LL | pub enum A {} | ^^^^^^^^^^^^^ | note: the lint level is defined here - --> $DIR/missing_debug_impls.rs:2:9 + --> $DIR/missing-debug-implementations-lint.rs:6:9 | LL | #![deny(missing_debug_implementations)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: type does not implement `Debug`; consider adding `#[derive(Debug)]` or a manual implementation - --> $DIR/missing_debug_impls.rs:20:1 + --> $DIR/missing-debug-implementations-lint.rs:23:1 | LL | pub struct Foo; | ^^^^^^^^^^^^^^^ diff --git a/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs index 85a903e245360..e28ca3e55b5ed 100644 --- a/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs +++ b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.rs @@ -1,7 +1,15 @@ +//! This test checks that when there's a type mismatch between a function item and +//! a function pointer, the error message focuses on the actual type difference +//! (return types, argument types) rather than the confusing "pointer vs item" distinction. +//! +//! See https://github.com/rust-lang/rust/issues/127263 + fn bar() {} + fn foo(x: i32) -> u32 { 0 } + fn main() { let b: fn() -> u32 = bar; //~ ERROR mismatched types [E0308] let f: fn(i32) = foo; //~ ERROR mismatched types [E0308] diff --git a/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr index 35b86114f16d0..8d63f2ea2d3c0 100644 --- a/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr +++ b/tests/ui/mismatched_types/fn-pointer-mismatch-diagnostics.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/method-output-diff-issue-127263.rs:6:26 + --> $DIR/fn-pointer-mismatch-diagnostics.rs:14:26 | LL | let b: fn() -> u32 = bar; | ----------- ^^^ expected fn pointer, found fn item @@ -10,7 +10,7 @@ LL | let b: fn() -> u32 = bar; found fn item `fn() -> () {bar}` error[E0308]: mismatched types - --> $DIR/method-output-diff-issue-127263.rs:7:22 + --> $DIR/fn-pointer-mismatch-diagnostics.rs:15:22 | LL | let f: fn(i32) = foo; | ------- ^^^ expected fn pointer, found fn item diff --git a/tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs index 02ed45c656f1c..04963c98765e9 100644 --- a/tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs +++ b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.rs @@ -1,3 +1,12 @@ +//! Test that ?Trait bounds are forbidden in supertraits and trait object types. +//! +//! While `?Sized` and other maybe bounds are allowed in type parameter bounds and where clauses, +//! they are explicitly forbidden in certain syntactic positions: +//! - As supertraits in trait definitions +//! - In trait object type expressions +//! +//! See https://github.com/rust-lang/rust/issues/20503 + trait Tr: ?Sized {} //~^ ERROR `?Trait` is not permitted in supertraits diff --git a/tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr index 230d11fd0ae66..bd0baa580bdf5 100644 --- a/tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr +++ b/tests/ui/traits/maybe-trait-bounds-forbidden-locations.stderr @@ -1,5 +1,5 @@ error[E0658]: `?Trait` is not permitted in supertraits - --> $DIR/maybe-bounds.rs:1:11 + --> $DIR/maybe-trait-bounds-forbidden-locations.rs:10:11 | LL | trait Tr: ?Sized {} | ^^^^^^ @@ -9,7 +9,7 @@ LL | trait Tr: ?Sized {} = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date error[E0658]: `?Trait` is not permitted in trait object types - --> $DIR/maybe-bounds.rs:4:20 + --> $DIR/maybe-trait-bounds-forbidden-locations.rs:13:20 | LL | type A1 = dyn Tr + (?Sized); | ^^^^^^^^ @@ -18,7 +18,7 @@ LL | type A1 = dyn Tr + (?Sized); = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date error[E0658]: `?Trait` is not permitted in trait object types - --> $DIR/maybe-bounds.rs:6:28 + --> $DIR/maybe-trait-bounds-forbidden-locations.rs:15:28 | LL | type A2 = dyn for<'a> Tr + (?Sized); | ^^^^^^^^ diff --git a/tests/ui/type-alias-enum-variants/module-type-args-error.rs b/tests/ui/type-alias-enum-variants/module-type-args-error.rs index 959024c46f4ff..9f7dae4f4f514 100644 --- a/tests/ui/type-alias-enum-variants/module-type-args-error.rs +++ b/tests/ui/type-alias-enum-variants/module-type-args-error.rs @@ -1,9 +1,16 @@ +//! Test that type arguments are properly rejected on modules. +//! +//! Related PR: https://github.com/rust-lang/rust/pull/56225 (RFC 2338 implementation) + mod Mod { pub struct FakeVariant(pub T); } fn main() { + // This should work fine - normal generic struct constructor Mod::FakeVariant::(0); + + // This should error - type arguments not allowed on modules Mod::::FakeVariant(0); //~^ ERROR type arguments are not allowed on module `Mod` [E0109] } diff --git a/tests/ui/type-alias-enum-variants/module-type-args-error.stderr b/tests/ui/type-alias-enum-variants/module-type-args-error.stderr index 92d972eba42bf..4c59d19eaa783 100644 --- a/tests/ui/type-alias-enum-variants/module-type-args-error.stderr +++ b/tests/ui/type-alias-enum-variants/module-type-args-error.stderr @@ -1,5 +1,5 @@ error[E0109]: type arguments are not allowed on module `Mod` - --> $DIR/mod-subitem-as-enum-variant.rs:7:11 + --> $DIR/module-type-args-error.rs:14:11 | LL | Mod::::FakeVariant(0); | --- ^^^ type argument not allowed