cleaned up some tests
This commit is contained in:
parent
3d81af8c55
commit
c240566561
9 changed files with 45 additions and 17 deletions
|
|
@ -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}");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
| ^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -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<T>(pub T);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// This should work fine - normal generic struct constructor
|
||||
Mod::FakeVariant::<i32>(0);
|
||||
|
||||
// This should error - type arguments not allowed on modules
|
||||
Mod::<i32>::FakeVariant(0);
|
||||
//~^ ERROR type arguments are not allowed on module `Mod` [E0109]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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::<i32>::FakeVariant(0);
|
||||
| --- ^^^ type argument not allowed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue