From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- .../trivial-bounds/trivial-bounds-inconsistent.rs | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs (limited to 'src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs') diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs b/src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs new file mode 100644 index 000000000..7148f5d6d --- /dev/null +++ b/src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs @@ -0,0 +1,74 @@ +// run-pass + +// Check that tautalogically false bounds are accepted, and are used +// in type inference. +#![feature(trivial_bounds)] +#![allow(unused)] + +pub trait Foo { + fn test(&self); +} + +fn generic_function(x: X) {} + +enum E where i32: Foo { V } //~ WARNING trivial_bounds + +struct S where i32: Foo; //~ WARNING trivial_bounds + +trait T where i32: Foo {} //~ WARNING trivial_bounds + +union U where i32: Foo { f: i32 } //~ WARNING trivial_bounds + +type Y where i32: Foo = (); +//~^ WARNING type_alias_bounds +//~| WARNING trivial_bounds + +impl Foo for () where i32: Foo { //~ WARNING trivial_bounds + fn test(&self) { + 3i32.test(); + Foo::test(&4i32); + generic_function(5i32); + } +} + +fn f() where i32: Foo { //~ WARNING trivial_bounds + let s = S; + 3i32.test(); + Foo::test(&4i32); + generic_function(5i32); +} + +fn g() where &'static str: Foo { //~ WARNING trivial_bounds + "Foo".test(); + Foo::test(&"Foo"); + generic_function("Foo"); +} + +trait A {} + +impl A for i32 {} + +struct Dst { + x: X, +} + +struct TwoStrs(str, str) where str: Sized; //~ WARNING trivial_bounds + +fn unsized_local() where for<'a> Dst: Sized { //~ WARNING trivial_bounds + let x: Dst = *(Box::new(Dst { x: 1 }) as Box>); +} + +fn return_str() -> str where str: Sized { //~ WARNING trivial_bounds + *"Sized".to_string().into_boxed_str() +} + +fn use_op(s: String) -> String where String: ::std::ops::Neg { + //~^ WARNING trivial_bounds + -s +} + +fn use_for() where i32: Iterator { //~ WARNING trivial_bounds + for _ in 2i32 {} +} + +fn main() {} -- cgit v1.2.3