From 62c92f30cf02fc56b8a774c77097f1111dc2f4ea Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Thu, 24 Jul 2025 17:45:27 +0500 Subject: moved 35 tests to organized locations --- tests/ui/cast/array-field-ptr-cast-14845.rs | 11 +++ tests/ui/cast/trait-object-size-error-14366.rs | 4 + tests/ui/closures/boxed-closure-lifetime-13808.rs | 17 ++++ .../coercion/method-return-trait-object-14399.rs | 17 ++++ tests/ui/consts/module-const-array-size-13763.rs | 14 ++++ tests/ui/drop/panic-during-drop-14875.rs | 36 +++++++++ tests/ui/extern/macro-use-extern-std-14330.rs | 6 ++ tests/ui/fn_traits/closure-trait-impl-14959.rs | 54 +++++++++++++ tests/ui/generics/box-missing-generics-14092.rs | 4 + tests/ui/issues/issue-13482-2.rs | 9 --- tests/ui/issues/issue-13482.rs | 7 -- tests/ui/issues/issue-13497-2.rs | 7 -- tests/ui/issues/issue-13497.rs | 8 -- tests/ui/issues/issue-13665.rs | 14 ---- tests/ui/issues/issue-13703.rs | 5 -- tests/ui/issues/issue-13763.rs | 14 ---- tests/ui/issues/issue-13775.rs | 9 --- tests/ui/issues/issue-13808.rs | 17 ---- tests/ui/issues/issue-13847.rs | 3 - tests/ui/issues/issue-13867.rs | 48 ----------- tests/ui/issues/issue-14082.rs | 19 ----- tests/ui/issues/issue-14091-2.rs | 17 ---- tests/ui/issues/issue-14091.rs | 4 - tests/ui/issues/issue-14092.rs | 4 - tests/ui/issues/issue-14229.rs | 21 ----- tests/ui/issues/issue-14254.rs | 92 ---------------------- tests/ui/issues/issue-14285.rs | 17 ---- tests/ui/issues/issue-14308.rs | 15 ---- tests/ui/issues/issue-14330.rs | 6 -- tests/ui/issues/issue-14366.rs | 4 - tests/ui/issues/issue-14393.rs | 9 --- tests/ui/issues/issue-14399.rs | 17 ---- tests/ui/issues/issue-14541.rs | 11 --- tests/ui/issues/issue-14721.rs | 4 - tests/ui/issues/issue-14821.rs | 21 ----- tests/ui/issues/issue-14845.rs | 11 --- tests/ui/issues/issue-14853.rs | 20 ----- tests/ui/issues/issue-14865.rs | 23 ------ tests/ui/issues/issue-14875.rs | 36 --------- tests/ui/issues/issue-14901.rs | 18 ----- tests/ui/issues/issue-14915.rs | 6 -- tests/ui/issues/issue-14919.rs | 54 ------------- tests/ui/issues/issue-14959.rs | 54 ------------- .../lifetimes/explicit-lifetime-required-14285.rs | 17 ++++ .../lifetimes/lifetime-bound-whitespace-13703.rs | 5 ++ .../lifetimes/missing-lifetime-specifier-13497.rs | 8 ++ .../ref-pattern-lifetime-annotation-13665.rs | 14 ++++ .../return-reference-local-variable-13497-2.rs | 7 ++ .../ui/lifetimes/trait-object-constructor-14821.rs | 21 +++++ tests/ui/macros/assert-mismatched-types-14091.rs | 4 + tests/ui/macros/assert-unary-operator-14091-2.rs | 17 ++++ tests/ui/match/guard-pattern-ordering-14865.rs | 23 ++++++ .../ui/match/multiple-refutable-patterns-13867.rs | 48 +++++++++++ tests/ui/match/tuple-usize-pattern-14393.rs | 9 +++ tests/ui/modules/use-shadowing-14082.rs | 19 +++++ .../ui/never_type/field-access-never-type-13847.rs | 3 + tests/ui/operator-recovery/box-arithmetic-14915.rs | 6 ++ tests/ui/pattern/array-length-mismatch-13482.rs | 7 ++ .../array-length-mismatch-verbose-13482-2.rs | 9 +++ .../pattern/struct-mismatch-destructure-14541.rs | 11 +++ tests/ui/pattern/struct-wildcard-pattern-14308.rs | 15 ++++ .../ui/trait-bounds/anonymous-parameters-13775.rs | 9 +++ tests/ui/traits/impl-trait-chain-14229.rs | 21 +++++ .../ui/traits/matcher-lifetime-inference-14919.rs | 54 +++++++++++++ tests/ui/traits/pointer-type-impls-14254.rs | 92 ++++++++++++++++++++++ tests/ui/traits/reader-wrapper-trait-14901.rs | 18 +++++ tests/ui/traits/trait-bound-mismatch-14853.rs | 20 +++++ tests/ui/typeck/str-no-field-desc-14721.rs | 4 + 68 files changed, 624 insertions(+), 624 deletions(-) create mode 100644 tests/ui/cast/array-field-ptr-cast-14845.rs create mode 100644 tests/ui/cast/trait-object-size-error-14366.rs create mode 100644 tests/ui/closures/boxed-closure-lifetime-13808.rs create mode 100644 tests/ui/coercion/method-return-trait-object-14399.rs create mode 100644 tests/ui/consts/module-const-array-size-13763.rs create mode 100644 tests/ui/drop/panic-during-drop-14875.rs create mode 100644 tests/ui/extern/macro-use-extern-std-14330.rs create mode 100644 tests/ui/fn_traits/closure-trait-impl-14959.rs create mode 100644 tests/ui/generics/box-missing-generics-14092.rs delete mode 100644 tests/ui/issues/issue-13482-2.rs delete mode 100644 tests/ui/issues/issue-13482.rs delete mode 100644 tests/ui/issues/issue-13497-2.rs delete mode 100644 tests/ui/issues/issue-13497.rs delete mode 100644 tests/ui/issues/issue-13665.rs delete mode 100644 tests/ui/issues/issue-13703.rs delete mode 100644 tests/ui/issues/issue-13763.rs delete mode 100644 tests/ui/issues/issue-13775.rs delete mode 100644 tests/ui/issues/issue-13808.rs delete mode 100644 tests/ui/issues/issue-13847.rs delete mode 100644 tests/ui/issues/issue-13867.rs delete mode 100644 tests/ui/issues/issue-14082.rs delete mode 100644 tests/ui/issues/issue-14091-2.rs delete mode 100644 tests/ui/issues/issue-14091.rs delete mode 100644 tests/ui/issues/issue-14092.rs delete mode 100644 tests/ui/issues/issue-14229.rs delete mode 100644 tests/ui/issues/issue-14254.rs delete mode 100644 tests/ui/issues/issue-14285.rs delete mode 100644 tests/ui/issues/issue-14308.rs delete mode 100644 tests/ui/issues/issue-14330.rs delete mode 100644 tests/ui/issues/issue-14366.rs delete mode 100644 tests/ui/issues/issue-14393.rs delete mode 100644 tests/ui/issues/issue-14399.rs delete mode 100644 tests/ui/issues/issue-14541.rs delete mode 100644 tests/ui/issues/issue-14721.rs delete mode 100644 tests/ui/issues/issue-14821.rs delete mode 100644 tests/ui/issues/issue-14845.rs delete mode 100644 tests/ui/issues/issue-14853.rs delete mode 100644 tests/ui/issues/issue-14865.rs delete mode 100644 tests/ui/issues/issue-14875.rs delete mode 100644 tests/ui/issues/issue-14901.rs delete mode 100644 tests/ui/issues/issue-14915.rs delete mode 100644 tests/ui/issues/issue-14919.rs delete mode 100644 tests/ui/issues/issue-14959.rs create mode 100644 tests/ui/lifetimes/explicit-lifetime-required-14285.rs create mode 100644 tests/ui/lifetimes/lifetime-bound-whitespace-13703.rs create mode 100644 tests/ui/lifetimes/missing-lifetime-specifier-13497.rs create mode 100644 tests/ui/lifetimes/ref-pattern-lifetime-annotation-13665.rs create mode 100644 tests/ui/lifetimes/return-reference-local-variable-13497-2.rs create mode 100644 tests/ui/lifetimes/trait-object-constructor-14821.rs create mode 100644 tests/ui/macros/assert-mismatched-types-14091.rs create mode 100644 tests/ui/macros/assert-unary-operator-14091-2.rs create mode 100644 tests/ui/match/guard-pattern-ordering-14865.rs create mode 100644 tests/ui/match/multiple-refutable-patterns-13867.rs create mode 100644 tests/ui/match/tuple-usize-pattern-14393.rs create mode 100644 tests/ui/modules/use-shadowing-14082.rs create mode 100644 tests/ui/never_type/field-access-never-type-13847.rs create mode 100644 tests/ui/operator-recovery/box-arithmetic-14915.rs create mode 100644 tests/ui/pattern/array-length-mismatch-13482.rs create mode 100644 tests/ui/pattern/array-length-mismatch-verbose-13482-2.rs create mode 100644 tests/ui/pattern/struct-mismatch-destructure-14541.rs create mode 100644 tests/ui/pattern/struct-wildcard-pattern-14308.rs create mode 100644 tests/ui/trait-bounds/anonymous-parameters-13775.rs create mode 100644 tests/ui/traits/impl-trait-chain-14229.rs create mode 100644 tests/ui/traits/matcher-lifetime-inference-14919.rs create mode 100644 tests/ui/traits/pointer-type-impls-14254.rs create mode 100644 tests/ui/traits/reader-wrapper-trait-14901.rs create mode 100644 tests/ui/traits/trait-bound-mismatch-14853.rs create mode 100644 tests/ui/typeck/str-no-field-desc-14721.rs (limited to 'tests/ui') diff --git a/tests/ui/cast/array-field-ptr-cast-14845.rs b/tests/ui/cast/array-field-ptr-cast-14845.rs new file mode 100644 index 00000000000..d9b20e1f688 --- /dev/null +++ b/tests/ui/cast/array-field-ptr-cast-14845.rs @@ -0,0 +1,11 @@ +struct X { + a: [u8; 1] +} + +fn main() { + let x = X { a: [0] }; + let _f = &x.a as *mut u8; //~ ERROR casting + + let local: [u8; 1] = [0]; + let _v = &local as *mut u8; //~ ERROR casting +} diff --git a/tests/ui/cast/trait-object-size-error-14366.rs b/tests/ui/cast/trait-object-size-error-14366.rs new file mode 100644 index 00000000000..bb338860d8b --- /dev/null +++ b/tests/ui/cast/trait-object-size-error-14366.rs @@ -0,0 +1,4 @@ +fn main() { + let _x = "test" as &dyn (::std::any::Any); + //~^ ERROR the size for values of type +} diff --git a/tests/ui/closures/boxed-closure-lifetime-13808.rs b/tests/ui/closures/boxed-closure-lifetime-13808.rs new file mode 100644 index 00000000000..d2961b35f2e --- /dev/null +++ b/tests/ui/closures/boxed-closure-lifetime-13808.rs @@ -0,0 +1,17 @@ +//@ run-pass +#![allow(dead_code)] +#![allow(unused_variables)] + +struct Foo<'a> { + listener: Box, +} + +impl<'a> Foo<'a> { + fn new(listener: F) -> Foo<'a> where F: FnMut() + 'a { + Foo { listener: Box::new(listener) } + } +} + +fn main() { + let a = Foo::new(|| {}); +} diff --git a/tests/ui/coercion/method-return-trait-object-14399.rs b/tests/ui/coercion/method-return-trait-object-14399.rs new file mode 100644 index 00000000000..a539e270fb0 --- /dev/null +++ b/tests/ui/coercion/method-return-trait-object-14399.rs @@ -0,0 +1,17 @@ +//@ run-pass +// #14399 +// We'd previously ICE if we had a method call whose return +// value was coerced to a trait object. (v.clone() returns Box +// which is coerced to Box). + + +#[derive(Clone)] +struct B1; + +trait A { fn foo(&self) {} } //~ WARN method `foo` is never used +impl A for B1 {} + +fn main() { + let v: Box<_> = Box::new(B1); + let _c: Box = v.clone(); +} diff --git a/tests/ui/consts/module-const-array-size-13763.rs b/tests/ui/consts/module-const-array-size-13763.rs new file mode 100644 index 00000000000..67b9bdc5f03 --- /dev/null +++ b/tests/ui/consts/module-const-array-size-13763.rs @@ -0,0 +1,14 @@ +//@ run-pass +#![allow(dead_code)] + +mod u8 { + pub const BITS: usize = 8; +} + +const NUM: usize = u8::BITS; + +struct MyStruct { nums: [usize; 8] } + +fn main() { + let _s = MyStruct { nums: [0; NUM] }; +} diff --git a/tests/ui/drop/panic-during-drop-14875.rs b/tests/ui/drop/panic-during-drop-14875.rs new file mode 100644 index 00000000000..e330c64a335 --- /dev/null +++ b/tests/ui/drop/panic-during-drop-14875.rs @@ -0,0 +1,36 @@ +//@ run-pass +//@ needs-unwind +//@ ignore-backends: gcc + +// Check that values are not leaked when a dtor panics (#14875) + +use std::panic::{self, UnwindSafe}; + +struct SetInnerOnDrop<'a>(&'a mut bool); + +impl<'a> UnwindSafe for SetInnerOnDrop<'a> {} + +impl<'a> Drop for SetInnerOnDrop<'a> { + fn drop(&mut self) { + *self.0 = true; + } +} + +struct PanicOnDrop; +impl Drop for PanicOnDrop { + fn drop(&mut self) { + panic!("test panic"); + } +} + +fn main() { + let mut set_on_drop = false; + { + let set_inner_on_drop = SetInnerOnDrop(&mut set_on_drop); + let _ = panic::catch_unwind(|| { + let _set_inner_on_drop = set_inner_on_drop; + let _panic_on_drop = PanicOnDrop; + }); + } + assert!(set_on_drop); +} diff --git a/tests/ui/extern/macro-use-extern-std-14330.rs b/tests/ui/extern/macro-use-extern-std-14330.rs new file mode 100644 index 00000000000..11199db5901 --- /dev/null +++ b/tests/ui/extern/macro-use-extern-std-14330.rs @@ -0,0 +1,6 @@ +//@ check-pass +#![allow(unused_imports)] + +#[macro_use] extern crate std as std2; + +fn main() {} diff --git a/tests/ui/fn_traits/closure-trait-impl-14959.rs b/tests/ui/fn_traits/closure-trait-impl-14959.rs new file mode 100644 index 00000000000..57af1207ff9 --- /dev/null +++ b/tests/ui/fn_traits/closure-trait-impl-14959.rs @@ -0,0 +1,54 @@ +//@ check-pass + +#![feature(fn_traits, unboxed_closures)] + +use std::ops::Fn; + +trait Response { fn dummy(&self) { } } +trait Request { fn dummy(&self) { } } +trait Ingot { + fn enter(&mut self, _: &mut R, _: &mut S, a: &mut Alloy) -> Status; +} + +#[allow(dead_code)] +struct HelloWorld; + +struct SendFile; +struct Alloy; +enum Status { + Continue +} + +impl Alloy { + fn find(&self) -> Option { + None + } +} + +impl<'b> Fn<(&'b mut (dyn Response + 'b),)> for SendFile { + extern "rust-call" fn call(&self, (_res,): (&'b mut (dyn Response + 'b),)) {} +} + +impl<'b> FnMut<(&'b mut (dyn Response + 'b),)> for SendFile { + extern "rust-call" fn call_mut(&mut self, (_res,): (&'b mut (dyn Response+'b),)) { + self.call((_res,)) + } +} + +impl<'b> FnOnce<(&'b mut (dyn Response + 'b),)> for SendFile { + type Output = (); + + extern "rust-call" fn call_once(self, (_res,): (&'b mut (dyn Response+'b),)) { + self.call((_res,)) + } +} + +impl Ingot for HelloWorld { + fn enter(&mut self, _req: &mut Rq, res: &mut Rs, alloy: &mut Alloy) -> Status { + let send_file = alloy.find::().unwrap(); + send_file(res); + Status::Continue + } +} + +fn main() {} diff --git a/tests/ui/generics/box-missing-generics-14092.rs b/tests/ui/generics/box-missing-generics-14092.rs new file mode 100644 index 00000000000..67c2a42eafb --- /dev/null +++ b/tests/ui/generics/box-missing-generics-14092.rs @@ -0,0 +1,4 @@ +fn fn1(0: Box) {} +//~^ ERROR missing generics for struct `Box` + +fn main() {} diff --git a/tests/ui/issues/issue-13482-2.rs b/tests/ui/issues/issue-13482-2.rs deleted file mode 100644 index 619e9d748ef..00000000000 --- a/tests/ui/issues/issue-13482-2.rs +++ /dev/null @@ -1,9 +0,0 @@ -//@ compile-flags:-Z verbose-internals - -fn main() { - let x = [1,2]; - let y = match x { - [] => None, //~ ERROR pattern requires 0 elements but array has 2 - [a,_] => Some(a) - }; -} diff --git a/tests/ui/issues/issue-13482.rs b/tests/ui/issues/issue-13482.rs deleted file mode 100644 index 244b3237e02..00000000000 --- a/tests/ui/issues/issue-13482.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn main() { - let x = [1,2]; - let y = match x { - [] => None, //~ ERROR pattern requires 0 elements but array has 2 - [a,_] => Some(a) - }; -} diff --git a/tests/ui/issues/issue-13497-2.rs b/tests/ui/issues/issue-13497-2.rs deleted file mode 100644 index c82da0f0096..00000000000 --- a/tests/ui/issues/issue-13497-2.rs +++ /dev/null @@ -1,7 +0,0 @@ -fn read_lines_borrowed<'a>() -> Vec<&'a str> { - let rawLines: Vec = vec!["foo ".to_string(), " bar".to_string()]; - rawLines //~ ERROR cannot return value referencing local variable `rawLines` - .iter().map(|l| l.trim()).collect() -} - -fn main() {} diff --git a/tests/ui/issues/issue-13497.rs b/tests/ui/issues/issue-13497.rs deleted file mode 100644 index 4b2795aa841..00000000000 --- a/tests/ui/issues/issue-13497.rs +++ /dev/null @@ -1,8 +0,0 @@ -fn read_lines_borrowed1() -> Vec< - &str //~ ERROR missing lifetime specifier -> { - let rawLines: Vec = vec!["foo ".to_string(), " bar".to_string()]; - rawLines.iter().map(|l| l.trim()).collect() -} - -fn main() {} diff --git a/tests/ui/issues/issue-13665.rs b/tests/ui/issues/issue-13665.rs deleted file mode 100644 index e1d8be16f45..00000000000 --- a/tests/ui/issues/issue-13665.rs +++ /dev/null @@ -1,14 +0,0 @@ -//@ run-pass - -fn foo<'r>() { - let maybe_value_ref: Option<&'r u8> = None; - - let _ = maybe_value_ref.map(|& ref v| v); - let _ = maybe_value_ref.map(|& ref v| -> &'r u8 {v}); - let _ = maybe_value_ref.map(|& ref v: &'r u8| -> &'r u8 {v}); - let _ = maybe_value_ref.map(|& ref v: &'r u8| {v}); -} - -fn main() { - foo(); -} diff --git a/tests/ui/issues/issue-13703.rs b/tests/ui/issues/issue-13703.rs deleted file mode 100644 index b385e6b9d2e..00000000000 --- a/tests/ui/issues/issue-13703.rs +++ /dev/null @@ -1,5 +0,0 @@ -//@ check-pass - -pub struct Foo<'a, 'b: 'a> { foo: &'a &'b isize } -pub fn foo<'a, 'b>(x: Foo<'a, 'b>, _o: Option<& & ()>) { let _y = x.foo; } -fn main() {} diff --git a/tests/ui/issues/issue-13763.rs b/tests/ui/issues/issue-13763.rs deleted file mode 100644 index 67b9bdc5f03..00000000000 --- a/tests/ui/issues/issue-13763.rs +++ /dev/null @@ -1,14 +0,0 @@ -//@ run-pass -#![allow(dead_code)] - -mod u8 { - pub const BITS: usize = 8; -} - -const NUM: usize = u8::BITS; - -struct MyStruct { nums: [usize; 8] } - -fn main() { - let _s = MyStruct { nums: [0; NUM] }; -} diff --git a/tests/ui/issues/issue-13775.rs b/tests/ui/issues/issue-13775.rs deleted file mode 100644 index 1477dab9e21..00000000000 --- a/tests/ui/issues/issue-13775.rs +++ /dev/null @@ -1,9 +0,0 @@ -//@ edition: 2015 -//@ check-pass - -trait Foo { - #[allow(anonymous_parameters)] - fn bar(&self, isize) {} -} - -fn main() {} diff --git a/tests/ui/issues/issue-13808.rs b/tests/ui/issues/issue-13808.rs deleted file mode 100644 index d2961b35f2e..00000000000 --- a/tests/ui/issues/issue-13808.rs +++ /dev/null @@ -1,17 +0,0 @@ -//@ run-pass -#![allow(dead_code)] -#![allow(unused_variables)] - -struct Foo<'a> { - listener: Box, -} - -impl<'a> Foo<'a> { - fn new(listener: F) -> Foo<'a> where F: FnMut() + 'a { - Foo { listener: Box::new(listener) } - } -} - -fn main() { - let a = Foo::new(|| {}); -} diff --git a/tests/ui/issues/issue-13847.rs b/tests/ui/issues/issue-13847.rs deleted file mode 100644 index 06a0304ae49..00000000000 --- a/tests/ui/issues/issue-13847.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - return.is_failure //~ ERROR no field `is_failure` on type `!` -} diff --git a/tests/ui/issues/issue-13867.rs b/tests/ui/issues/issue-13867.rs deleted file mode 100644 index ad7d6d66393..00000000000 --- a/tests/ui/issues/issue-13867.rs +++ /dev/null @@ -1,48 +0,0 @@ -//@ run-pass -// Test that codegen works correctly when there are multiple refutable -// patterns in match expression. - -enum Foo { - FooUint(usize), - FooNullary, -} - -fn main() { - let r = match (Foo::FooNullary, 'a') { - (Foo::FooUint(..), 'a'..='z') => 1, - (Foo::FooNullary, 'x') => 2, - _ => 0 - }; - assert_eq!(r, 0); - - let r = match (Foo::FooUint(0), 'a') { - (Foo::FooUint(1), 'a'..='z') => 1, - (Foo::FooUint(..), 'x') => 2, - (Foo::FooNullary, 'a') => 3, - _ => 0 - }; - assert_eq!(r, 0); - - let r = match ('a', Foo::FooUint(0)) { - ('a'..='z', Foo::FooUint(1)) => 1, - ('x', Foo::FooUint(..)) => 2, - ('a', Foo::FooNullary) => 3, - _ => 0 - }; - assert_eq!(r, 0); - - let r = match ('a', 'a') { - ('a'..='z', 'b') => 1, - ('x', 'a'..='z') => 2, - _ => 0 - }; - assert_eq!(r, 0); - - let r = match ('a', 'a') { - ('a'..='z', 'b') => 1, - ('x', 'a'..='z') => 2, - ('a', 'a') => 3, - _ => 0 - }; - assert_eq!(r, 3); -} diff --git a/tests/ui/issues/issue-14082.rs b/tests/ui/issues/issue-14082.rs deleted file mode 100644 index 16556e1d260..00000000000 --- a/tests/ui/issues/issue-14082.rs +++ /dev/null @@ -1,19 +0,0 @@ -//@ check-pass - -#![allow(unused_imports, dead_code)] - -use foo::Foo; - -mod foo { - pub use m::Foo; // this should shadow d::Foo -} - -mod m { - pub struct Foo; -} - -mod d { - pub struct Foo; -} - -fn main() {} diff --git a/tests/ui/issues/issue-14091-2.rs b/tests/ui/issues/issue-14091-2.rs deleted file mode 100644 index e2f6b183372..00000000000 --- a/tests/ui/issues/issue-14091-2.rs +++ /dev/null @@ -1,17 +0,0 @@ -// - -// Very - -// sensitive -pub struct BytePos(pub u32); - -// to particular - -// line numberings / offsets - -fn main() { - let x = BytePos(1); - - assert!(x, x); - //~^ ERROR cannot apply unary operator `!` to type `BytePos` -} diff --git a/tests/ui/issues/issue-14091.rs b/tests/ui/issues/issue-14091.rs deleted file mode 100644 index 0ee20de9053..00000000000 --- a/tests/ui/issues/issue-14091.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main(){ - assert!(1,1); - //~^ ERROR mismatched types -} diff --git a/tests/ui/issues/issue-14092.rs b/tests/ui/issues/issue-14092.rs deleted file mode 100644 index 67c2a42eafb..00000000000 --- a/tests/ui/issues/issue-14092.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn fn1(0: Box) {} -//~^ ERROR missing generics for struct `Box` - -fn main() {} diff --git a/tests/ui/issues/issue-14229.rs b/tests/ui/issues/issue-14229.rs deleted file mode 100644 index eb6324da3b6..00000000000 --- a/tests/ui/issues/issue-14229.rs +++ /dev/null @@ -1,21 +0,0 @@ -//@ run-pass -trait Foo: Sized { - fn foo(self) {} -} - -trait Bar: Sized { - fn bar(self) {} -} - -struct S; - -impl<'l> Foo for &'l S {} - -impl Bar for T {} - -fn main() { - let s = S; - s.foo(); - (&s).bar(); - s.bar(); -} diff --git a/tests/ui/issues/issue-14254.rs b/tests/ui/issues/issue-14254.rs deleted file mode 100644 index 90ad375c262..00000000000 --- a/tests/ui/issues/issue-14254.rs +++ /dev/null @@ -1,92 +0,0 @@ -//@ check-pass - -trait Foo: Sized { - fn bar(&self); - fn baz(&self) { } - fn bah(_: Option) { } -} - -struct BarTy { - x : isize, - y : f64, -} - -impl BarTy { - fn a() {} - fn b(&self) {} -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl Foo for *const BarTy { - fn bar(&self) { - self.baz(); - BarTy::a(); - Foo::bah(None::<*const BarTy>); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl<'a> Foo for &'a BarTy { - fn bar(&self) { - self.baz(); - self.x; - self.y; - BarTy::a(); - Foo::bah(None::<&BarTy>); - self.b(); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl<'a> Foo for &'a mut BarTy { - fn bar(&self) { - self.baz(); - self.x; - self.y; - BarTy::a(); - Foo::bah(None::<&mut BarTy>); - self.b(); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl Foo for Box { - fn bar(&self) { - self.baz(); - Foo::bah(None::>); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl Foo for *const isize { - fn bar(&self) { - self.baz(); - Foo::bah(None::<*const isize>); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl<'a> Foo for &'a isize { - fn bar(&self) { - self.baz(); - Foo::bah(None::<&isize>); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl<'a> Foo for &'a mut isize { - fn bar(&self) { - self.baz(); - Foo::bah(None::<&mut isize>); - } -} - -// If these fail, it's necessary to update rustc_resolve and the cfail tests. -impl Foo for Box { - fn bar(&self) { - self.baz(); - Foo::bah(None::>); - } -} - -fn main() {} diff --git a/tests/ui/issues/issue-14285.rs b/tests/ui/issues/issue-14285.rs deleted file mode 100644 index 2ba9ff71773..00000000000 --- a/tests/ui/issues/issue-14285.rs +++ /dev/null @@ -1,17 +0,0 @@ -trait Foo { - fn dummy(&self) { } -} - -struct A; - -impl Foo for A {} - -struct B<'a>(&'a (dyn Foo + 'a)); - -fn foo<'a>(a: &dyn Foo) -> B<'a> { - B(a) //~ ERROR explicit lifetime required in the type of `a` [E0621] -} - -fn main() { - let _test = foo(&A); -} diff --git a/tests/ui/issues/issue-14308.rs b/tests/ui/issues/issue-14308.rs deleted file mode 100644 index 724be160d06..00000000000 --- a/tests/ui/issues/issue-14308.rs +++ /dev/null @@ -1,15 +0,0 @@ -//@ run-pass - -struct A(isize); - -fn main() { - let x = match A(3) { - A(..) => 1 - }; - assert_eq!(x, 1); - let x = match A(4) { - A(1) => 1, - A(..) => 2 - }; - assert_eq!(x, 2); -} diff --git a/tests/ui/issues/issue-14330.rs b/tests/ui/issues/issue-14330.rs deleted file mode 100644 index 11199db5901..00000000000 --- a/tests/ui/issues/issue-14330.rs +++ /dev/null @@ -1,6 +0,0 @@ -//@ check-pass -#![allow(unused_imports)] - -#[macro_use] extern crate std as std2; - -fn main() {} diff --git a/tests/ui/issues/issue-14366.rs b/tests/ui/issues/issue-14366.rs deleted file mode 100644 index bb338860d8b..00000000000 --- a/tests/ui/issues/issue-14366.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main() { - let _x = "test" as &dyn (::std::any::Any); - //~^ ERROR the size for values of type -} diff --git a/tests/ui/issues/issue-14393.rs b/tests/ui/issues/issue-14393.rs deleted file mode 100644 index 69c3fc15d31..00000000000 --- a/tests/ui/issues/issue-14393.rs +++ /dev/null @@ -1,9 +0,0 @@ -//@ run-pass - -fn main() { - match ("", 1_usize) { - (_, 42_usize) => (), - ("", _) => (), - _ => () - } -} diff --git a/tests/ui/issues/issue-14399.rs b/tests/ui/issues/issue-14399.rs deleted file mode 100644 index a539e270fb0..00000000000 --- a/tests/ui/issues/issue-14399.rs +++ /dev/null @@ -1,17 +0,0 @@ -//@ run-pass -// #14399 -// We'd previously ICE if we had a method call whose return -// value was coerced to a trait object. (v.clone() returns Box -// which is coerced to Box). - - -#[derive(Clone)] -struct B1; - -trait A { fn foo(&self) {} } //~ WARN method `foo` is never used -impl A for B1 {} - -fn main() { - let v: Box<_> = Box::new(B1); - let _c: Box = v.clone(); -} diff --git a/tests/ui/issues/issue-14541.rs b/tests/ui/issues/issue-14541.rs deleted file mode 100644 index 358d29419f9..00000000000 --- a/tests/ui/issues/issue-14541.rs +++ /dev/null @@ -1,11 +0,0 @@ -struct Vec2 { y: f32 } -struct Vec3 { y: f32, z: f32 } - -fn make(v: Vec2) { - let Vec3 { y: _, z: _ } = v; - //~^ ERROR mismatched types - //~| NOTE expected `Vec2`, found `Vec3` - //~| NOTE this expression has type `Vec2` -} - -fn main() { } diff --git a/tests/ui/issues/issue-14721.rs b/tests/ui/issues/issue-14721.rs deleted file mode 100644 index c015a6bab08..00000000000 --- a/tests/ui/issues/issue-14721.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main() { - let foo = "str"; - println!("{}", foo.desc); //~ ERROR no field `desc` on type `&str` -} diff --git a/tests/ui/issues/issue-14821.rs b/tests/ui/issues/issue-14821.rs deleted file mode 100644 index b11a885b3a0..00000000000 --- a/tests/ui/issues/issue-14821.rs +++ /dev/null @@ -1,21 +0,0 @@ -//@ run-pass -#![allow(dead_code)] -#![allow(unused_variables)] -trait SomeTrait {} -struct Meow; -impl SomeTrait for Meow {} - -struct Foo<'a> { - x: &'a dyn SomeTrait, - y: &'a dyn SomeTrait, -} - -impl<'a> Foo<'a> { - pub fn new<'b>(x: &'b dyn SomeTrait, y: &'b dyn SomeTrait) -> Foo<'b> { Foo { x: x, y: y } } -} - -fn main() { - let r = Meow; - let s = Meow; - let q = Foo::new(&r as &dyn SomeTrait, &s as &dyn SomeTrait); -} diff --git a/tests/ui/issues/issue-14845.rs b/tests/ui/issues/issue-14845.rs deleted file mode 100644 index d9b20e1f688..00000000000 --- a/tests/ui/issues/issue-14845.rs +++ /dev/null @@ -1,11 +0,0 @@ -struct X { - a: [u8; 1] -} - -fn main() { - let x = X { a: [0] }; - let _f = &x.a as *mut u8; //~ ERROR casting - - let local: [u8; 1] = [0]; - let _v = &local as *mut u8; //~ ERROR casting -} diff --git a/tests/ui/issues/issue-14853.rs b/tests/ui/issues/issue-14853.rs deleted file mode 100644 index 4ce6e3174d0..00000000000 --- a/tests/ui/issues/issue-14853.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::fmt::Debug; - -trait Str {} - -trait Something: Sized { - fn yay(_: Option, thing: &[T]); -} - -struct X { data: u32 } - -impl Something for X { - fn yay(_:Option, thing: &[T]) { - //~^ ERROR E0276 - } -} - -fn main() { - let arr = &["one", "two", "three"]; - println!("{:?}", Something::yay(None::, arr)); -} diff --git a/tests/ui/issues/issue-14865.rs b/tests/ui/issues/issue-14865.rs deleted file mode 100644 index e0f8bfe9428..00000000000 --- a/tests/ui/issues/issue-14865.rs +++ /dev/null @@ -1,23 +0,0 @@ -//@ run-pass -#![allow(dead_code)] - -enum X { - Foo(usize), - Bar(bool) -} - -fn main() { - let x = match X::Foo(42) { - X::Foo(..) => 1, - _ if true => 0, - X::Bar(..) => panic!("Oh dear") - }; - assert_eq!(x, 1); - - let x = match X::Foo(42) { - _ if true => 0, - X::Foo(..) => 1, - X::Bar(..) => panic!("Oh dear") - }; - assert_eq!(x, 0); -} diff --git a/tests/ui/issues/issue-14875.rs b/tests/ui/issues/issue-14875.rs deleted file mode 100644 index e330c64a335..00000000000 --- a/tests/ui/issues/issue-14875.rs +++ /dev/null @@ -1,36 +0,0 @@ -//@ run-pass -//@ needs-unwind -//@ ignore-backends: gcc - -// Check that values are not leaked when a dtor panics (#14875) - -use std::panic::{self, UnwindSafe}; - -struct SetInnerOnDrop<'a>(&'a mut bool); - -impl<'a> UnwindSafe for SetInnerOnDrop<'a> {} - -impl<'a> Drop for SetInnerOnDrop<'a> { - fn drop(&mut self) { - *self.0 = true; - } -} - -struct PanicOnDrop; -impl Drop for PanicOnDrop { - fn drop(&mut self) { - panic!("test panic"); - } -} - -fn main() { - let mut set_on_drop = false; - { - let set_inner_on_drop = SetInnerOnDrop(&mut set_on_drop); - let _ = panic::catch_unwind(|| { - let _set_inner_on_drop = set_inner_on_drop; - let _panic_on_drop = PanicOnDrop; - }); - } - assert!(set_on_drop); -} diff --git a/tests/ui/issues/issue-14901.rs b/tests/ui/issues/issue-14901.rs deleted file mode 100644 index ddc12b9ef3c..00000000000 --- a/tests/ui/issues/issue-14901.rs +++ /dev/null @@ -1,18 +0,0 @@ -//@ check-pass -pub trait Reader {} - -enum Wrapper<'a> { - WrapReader(&'a (dyn Reader + 'a)) -} - -trait Wrap<'a> { - fn wrap(self) -> Wrapper<'a>; -} - -impl<'a, R: Reader> Wrap<'a> for &'a mut R { - fn wrap(self) -> Wrapper<'a> { - Wrapper::WrapReader(self as &'a mut dyn Reader) - } -} - -pub fn main() {} diff --git a/tests/ui/issues/issue-14915.rs b/tests/ui/issues/issue-14915.rs deleted file mode 100644 index 127b909dd63..00000000000 --- a/tests/ui/issues/issue-14915.rs +++ /dev/null @@ -1,6 +0,0 @@ -fn main() { - let x: Box = Box::new(0); - - println!("{}", x + 1); - //~^ ERROR cannot add `{integer}` to `Box` -} diff --git a/tests/ui/issues/issue-14919.rs b/tests/ui/issues/issue-14919.rs deleted file mode 100644 index 3a834b13d07..00000000000 --- a/tests/ui/issues/issue-14919.rs +++ /dev/null @@ -1,54 +0,0 @@ -//@ run-pass -#![allow(unused_must_use)] -#![allow(dead_code)] - -trait Matcher { - fn next_match(&mut self) -> Option<(usize, usize)>; -} - -struct CharPredMatcher<'a, 'b> { - str: &'a str, - pred: Box bool + 'b>, -} - -impl<'a, 'b> Matcher for CharPredMatcher<'a, 'b> { - fn next_match(&mut self) -> Option<(usize, usize)> { - None - } -} - -trait IntoMatcher<'a, T> { - fn into_matcher(self, _: &'a str) -> T; -} - -impl<'a, 'b, F> IntoMatcher<'a, CharPredMatcher<'a, 'b>> for F where F: FnMut(char) -> bool + 'b { - fn into_matcher(self, s: &'a str) -> CharPredMatcher<'a, 'b> { - CharPredMatcher { - str: s, - pred: Box::new(self), - } - } -} - -struct MatchIndices { - matcher: M -} - -impl Iterator for MatchIndices { - type Item = (usize, usize); - - fn next(&mut self) -> Option<(usize, usize)> { - self.matcher.next_match() - } -} - -fn match_indices<'a, M, T: IntoMatcher<'a, M>>(s: &'a str, from: T) -> MatchIndices { - let string_matcher = from.into_matcher(s); - MatchIndices { matcher: string_matcher } -} - -fn main() { - let s = "abcbdef"; - match_indices(s, |c: char| c == 'b') - .collect::>(); -} diff --git a/tests/ui/issues/issue-14959.rs b/tests/ui/issues/issue-14959.rs deleted file mode 100644 index 57af1207ff9..00000000000 --- a/tests/ui/issues/issue-14959.rs +++ /dev/null @@ -1,54 +0,0 @@ -//@ check-pass - -#![feature(fn_traits, unboxed_closures)] - -use std::ops::Fn; - -trait Response { fn dummy(&self) { } } -trait Request { fn dummy(&self) { } } -trait Ingot { - fn enter(&mut self, _: &mut R, _: &mut S, a: &mut Alloy) -> Status; -} - -#[allow(dead_code)] -struct HelloWorld; - -struct SendFile; -struct Alloy; -enum Status { - Continue -} - -impl Alloy { - fn find(&self) -> Option { - None - } -} - -impl<'b> Fn<(&'b mut (dyn Response + 'b),)> for SendFile { - extern "rust-call" fn call(&self, (_res,): (&'b mut (dyn Response + 'b),)) {} -} - -impl<'b> FnMut<(&'b mut (dyn Response + 'b),)> for SendFile { - extern "rust-call" fn call_mut(&mut self, (_res,): (&'b mut (dyn Response+'b),)) { - self.call((_res,)) - } -} - -impl<'b> FnOnce<(&'b mut (dyn Response + 'b),)> for SendFile { - type Output = (); - - extern "rust-call" fn call_once(self, (_res,): (&'b mut (dyn Response+'b),)) { - self.call((_res,)) - } -} - -impl Ingot for HelloWorld { - fn enter(&mut self, _req: &mut Rq, res: &mut Rs, alloy: &mut Alloy) -> Status { - let send_file = alloy.find::().unwrap(); - send_file(res); - Status::Continue - } -} - -fn main() {} diff --git a/tests/ui/lifetimes/explicit-lifetime-required-14285.rs b/tests/ui/lifetimes/explicit-lifetime-required-14285.rs new file mode 100644 index 00000000000..2ba9ff71773 --- /dev/null +++ b/tests/ui/lifetimes/explicit-lifetime-required-14285.rs @@ -0,0 +1,17 @@ +trait Foo { + fn dummy(&self) { } +} + +struct A; + +impl Foo for A {} + +struct B<'a>(&'a (dyn Foo + 'a)); + +fn foo<'a>(a: &dyn Foo) -> B<'a> { + B(a) //~ ERROR explicit lifetime required in the type of `a` [E0621] +} + +fn main() { + let _test = foo(&A); +} diff --git a/tests/ui/lifetimes/lifetime-bound-whitespace-13703.rs b/tests/ui/lifetimes/lifetime-bound-whitespace-13703.rs new file mode 100644 index 00000000000..b385e6b9d2e --- /dev/null +++ b/tests/ui/lifetimes/lifetime-bound-whitespace-13703.rs @@ -0,0 +1,5 @@ +//@ check-pass + +pub struct Foo<'a, 'b: 'a> { foo: &'a &'b isize } +pub fn foo<'a, 'b>(x: Foo<'a, 'b>, _o: Option<& & ()>) { let _y = x.foo; } +fn main() {} diff --git a/tests/ui/lifetimes/missing-lifetime-specifier-13497.rs b/tests/ui/lifetimes/missing-lifetime-specifier-13497.rs new file mode 100644 index 00000000000..4b2795aa841 --- /dev/null +++ b/tests/ui/lifetimes/missing-lifetime-specifier-13497.rs @@ -0,0 +1,8 @@ +fn read_lines_borrowed1() -> Vec< + &str //~ ERROR missing lifetime specifier +> { + let rawLines: Vec = vec!["foo ".to_string(), " bar".to_string()]; + rawLines.iter().map(|l| l.trim()).collect() +} + +fn main() {} diff --git a/tests/ui/lifetimes/ref-pattern-lifetime-annotation-13665.rs b/tests/ui/lifetimes/ref-pattern-lifetime-annotation-13665.rs new file mode 100644 index 00000000000..e1d8be16f45 --- /dev/null +++ b/tests/ui/lifetimes/ref-pattern-lifetime-annotation-13665.rs @@ -0,0 +1,14 @@ +//@ run-pass + +fn foo<'r>() { + let maybe_value_ref: Option<&'r u8> = None; + + let _ = maybe_value_ref.map(|& ref v| v); + let _ = maybe_value_ref.map(|& ref v| -> &'r u8 {v}); + let _ = maybe_value_ref.map(|& ref v: &'r u8| -> &'r u8 {v}); + let _ = maybe_value_ref.map(|& ref v: &'r u8| {v}); +} + +fn main() { + foo(); +} diff --git a/tests/ui/lifetimes/return-reference-local-variable-13497-2.rs b/tests/ui/lifetimes/return-reference-local-variable-13497-2.rs new file mode 100644 index 00000000000..c82da0f0096 --- /dev/null +++ b/tests/ui/lifetimes/return-reference-local-variable-13497-2.rs @@ -0,0 +1,7 @@ +fn read_lines_borrowed<'a>() -> Vec<&'a str> { + let rawLines: Vec = vec!["foo ".to_string(), " bar".to_string()]; + rawLines //~ ERROR cannot return value referencing local variable `rawLines` + .iter().map(|l| l.trim()).collect() +} + +fn main() {} diff --git a/tests/ui/lifetimes/trait-object-constructor-14821.rs b/tests/ui/lifetimes/trait-object-constructor-14821.rs new file mode 100644 index 00000000000..b11a885b3a0 --- /dev/null +++ b/tests/ui/lifetimes/trait-object-constructor-14821.rs @@ -0,0 +1,21 @@ +//@ run-pass +#![allow(dead_code)] +#![allow(unused_variables)] +trait SomeTrait {} +struct Meow; +impl SomeTrait for Meow {} + +struct Foo<'a> { + x: &'a dyn SomeTrait, + y: &'a dyn SomeTrait, +} + +impl<'a> Foo<'a> { + pub fn new<'b>(x: &'b dyn SomeTrait, y: &'b dyn SomeTrait) -> Foo<'b> { Foo { x: x, y: y } } +} + +fn main() { + let r = Meow; + let s = Meow; + let q = Foo::new(&r as &dyn SomeTrait, &s as &dyn SomeTrait); +} diff --git a/tests/ui/macros/assert-mismatched-types-14091.rs b/tests/ui/macros/assert-mismatched-types-14091.rs new file mode 100644 index 00000000000..0ee20de9053 --- /dev/null +++ b/tests/ui/macros/assert-mismatched-types-14091.rs @@ -0,0 +1,4 @@ +fn main(){ + assert!(1,1); + //~^ ERROR mismatched types +} diff --git a/tests/ui/macros/assert-unary-operator-14091-2.rs b/tests/ui/macros/assert-unary-operator-14091-2.rs new file mode 100644 index 00000000000..e2f6b183372 --- /dev/null +++ b/tests/ui/macros/assert-unary-operator-14091-2.rs @@ -0,0 +1,17 @@ +// + +// Very + +// sensitive +pub struct BytePos(pub u32); + +// to particular + +// line numberings / offsets + +fn main() { + let x = BytePos(1); + + assert!(x, x); + //~^ ERROR cannot apply unary operator `!` to type `BytePos` +} diff --git a/tests/ui/match/guard-pattern-ordering-14865.rs b/tests/ui/match/guard-pattern-ordering-14865.rs new file mode 100644 index 00000000000..e0f8bfe9428 --- /dev/null +++ b/tests/ui/match/guard-pattern-ordering-14865.rs @@ -0,0 +1,23 @@ +//@ run-pass +#![allow(dead_code)] + +enum X { + Foo(usize), + Bar(bool) +} + +fn main() { + let x = match X::Foo(42) { + X::Foo(..) => 1, + _ if true => 0, + X::Bar(..) => panic!("Oh dear") + }; + assert_eq!(x, 1); + + let x = match X::Foo(42) { + _ if true => 0, + X::Foo(..) => 1, + X::Bar(..) => panic!("Oh dear") + }; + assert_eq!(x, 0); +} diff --git a/tests/ui/match/multiple-refutable-patterns-13867.rs b/tests/ui/match/multiple-refutable-patterns-13867.rs new file mode 100644 index 00000000000..ad7d6d66393 --- /dev/null +++ b/tests/ui/match/multiple-refutable-patterns-13867.rs @@ -0,0 +1,48 @@ +//@ run-pass +// Test that codegen works correctly when there are multiple refutable +// patterns in match expression. + +enum Foo { + FooUint(usize), + FooNullary, +} + +fn main() { + let r = match (Foo::FooNullary, 'a') { + (Foo::FooUint(..), 'a'..='z') => 1, + (Foo::FooNullary, 'x') => 2, + _ => 0 + }; + assert_eq!(r, 0); + + let r = match (Foo::FooUint(0), 'a') { + (Foo::FooUint(1), 'a'..='z') => 1, + (Foo::FooUint(..), 'x') => 2, + (Foo::FooNullary, 'a') => 3, + _ => 0 + }; + assert_eq!(r, 0); + + let r = match ('a', Foo::FooUint(0)) { + ('a'..='z', Foo::FooUint(1)) => 1, + ('x', Foo::FooUint(..)) => 2, + ('a', Foo::FooNullary) => 3, + _ => 0 + }; + assert_eq!(r, 0); + + let r = match ('a', 'a') { + ('a'..='z', 'b') => 1, + ('x', 'a'..='z') => 2, + _ => 0 + }; + assert_eq!(r, 0); + + let r = match ('a', 'a') { + ('a'..='z', 'b') => 1, + ('x', 'a'..='z') => 2, + ('a', 'a') => 3, + _ => 0 + }; + assert_eq!(r, 3); +} diff --git a/tests/ui/match/tuple-usize-pattern-14393.rs b/tests/ui/match/tuple-usize-pattern-14393.rs new file mode 100644 index 00000000000..69c3fc15d31 --- /dev/null +++ b/tests/ui/match/tuple-usize-pattern-14393.rs @@ -0,0 +1,9 @@ +//@ run-pass + +fn main() { + match ("", 1_usize) { + (_, 42_usize) => (), + ("", _) => (), + _ => () + } +} diff --git a/tests/ui/modules/use-shadowing-14082.rs b/tests/ui/modules/use-shadowing-14082.rs new file mode 100644 index 00000000000..16556e1d260 --- /dev/null +++ b/tests/ui/modules/use-shadowing-14082.rs @@ -0,0 +1,19 @@ +//@ check-pass + +#![allow(unused_imports, dead_code)] + +use foo::Foo; + +mod foo { + pub use m::Foo; // this should shadow d::Foo +} + +mod m { + pub struct Foo; +} + +mod d { + pub struct Foo; +} + +fn main() {} diff --git a/tests/ui/never_type/field-access-never-type-13847.rs b/tests/ui/never_type/field-access-never-type-13847.rs new file mode 100644 index 00000000000..06a0304ae49 --- /dev/null +++ b/tests/ui/never_type/field-access-never-type-13847.rs @@ -0,0 +1,3 @@ +fn main() { + return.is_failure //~ ERROR no field `is_failure` on type `!` +} diff --git a/tests/ui/operator-recovery/box-arithmetic-14915.rs b/tests/ui/operator-recovery/box-arithmetic-14915.rs new file mode 100644 index 00000000000..127b909dd63 --- /dev/null +++ b/tests/ui/operator-recovery/box-arithmetic-14915.rs @@ -0,0 +1,6 @@ +fn main() { + let x: Box = Box::new(0); + + println!("{}", x + 1); + //~^ ERROR cannot add `{integer}` to `Box` +} diff --git a/tests/ui/pattern/array-length-mismatch-13482.rs b/tests/ui/pattern/array-length-mismatch-13482.rs new file mode 100644 index 00000000000..244b3237e02 --- /dev/null +++ b/tests/ui/pattern/array-length-mismatch-13482.rs @@ -0,0 +1,7 @@ +fn main() { + let x = [1,2]; + let y = match x { + [] => None, //~ ERROR pattern requires 0 elements but array has 2 + [a,_] => Some(a) + }; +} diff --git a/tests/ui/pattern/array-length-mismatch-verbose-13482-2.rs b/tests/ui/pattern/array-length-mismatch-verbose-13482-2.rs new file mode 100644 index 00000000000..619e9d748ef --- /dev/null +++ b/tests/ui/pattern/array-length-mismatch-verbose-13482-2.rs @@ -0,0 +1,9 @@ +//@ compile-flags:-Z verbose-internals + +fn main() { + let x = [1,2]; + let y = match x { + [] => None, //~ ERROR pattern requires 0 elements but array has 2 + [a,_] => Some(a) + }; +} diff --git a/tests/ui/pattern/struct-mismatch-destructure-14541.rs b/tests/ui/pattern/struct-mismatch-destructure-14541.rs new file mode 100644 index 00000000000..358d29419f9 --- /dev/null +++ b/tests/ui/pattern/struct-mismatch-destructure-14541.rs @@ -0,0 +1,11 @@ +struct Vec2 { y: f32 } +struct Vec3 { y: f32, z: f32 } + +fn make(v: Vec2) { + let Vec3 { y: _, z: _ } = v; + //~^ ERROR mismatched types + //~| NOTE expected `Vec2`, found `Vec3` + //~| NOTE this expression has type `Vec2` +} + +fn main() { } diff --git a/tests/ui/pattern/struct-wildcard-pattern-14308.rs b/tests/ui/pattern/struct-wildcard-pattern-14308.rs new file mode 100644 index 00000000000..724be160d06 --- /dev/null +++ b/tests/ui/pattern/struct-wildcard-pattern-14308.rs @@ -0,0 +1,15 @@ +//@ run-pass + +struct A(isize); + +fn main() { + let x = match A(3) { + A(..) => 1 + }; + assert_eq!(x, 1); + let x = match A(4) { + A(1) => 1, + A(..) => 2 + }; + assert_eq!(x, 2); +} diff --git a/tests/ui/trait-bounds/anonymous-parameters-13775.rs b/tests/ui/trait-bounds/anonymous-parameters-13775.rs new file mode 100644 index 00000000000..1477dab9e21 --- /dev/null +++ b/tests/ui/trait-bounds/anonymous-parameters-13775.rs @@ -0,0 +1,9 @@ +//@ edition: 2015 +//@ check-pass + +trait Foo { + #[allow(anonymous_parameters)] + fn bar(&self, isize) {} +} + +fn main() {} diff --git a/tests/ui/traits/impl-trait-chain-14229.rs b/tests/ui/traits/impl-trait-chain-14229.rs new file mode 100644 index 00000000000..eb6324da3b6 --- /dev/null +++ b/tests/ui/traits/impl-trait-chain-14229.rs @@ -0,0 +1,21 @@ +//@ run-pass +trait Foo: Sized { + fn foo(self) {} +} + +trait Bar: Sized { + fn bar(self) {} +} + +struct S; + +impl<'l> Foo for &'l S {} + +impl Bar for T {} + +fn main() { + let s = S; + s.foo(); + (&s).bar(); + s.bar(); +} diff --git a/tests/ui/traits/matcher-lifetime-inference-14919.rs b/tests/ui/traits/matcher-lifetime-inference-14919.rs new file mode 100644 index 00000000000..3a834b13d07 --- /dev/null +++ b/tests/ui/traits/matcher-lifetime-inference-14919.rs @@ -0,0 +1,54 @@ +//@ run-pass +#![allow(unused_must_use)] +#![allow(dead_code)] + +trait Matcher { + fn next_match(&mut self) -> Option<(usize, usize)>; +} + +struct CharPredMatcher<'a, 'b> { + str: &'a str, + pred: Box bool + 'b>, +} + +impl<'a, 'b> Matcher for CharPredMatcher<'a, 'b> { + fn next_match(&mut self) -> Option<(usize, usize)> { + None + } +} + +trait IntoMatcher<'a, T> { + fn into_matcher(self, _: &'a str) -> T; +} + +impl<'a, 'b, F> IntoMatcher<'a, CharPredMatcher<'a, 'b>> for F where F: FnMut(char) -> bool + 'b { + fn into_matcher(self, s: &'a str) -> CharPredMatcher<'a, 'b> { + CharPredMatcher { + str: s, + pred: Box::new(self), + } + } +} + +struct MatchIndices { + matcher: M +} + +impl Iterator for MatchIndices { + type Item = (usize, usize); + + fn next(&mut self) -> Option<(usize, usize)> { + self.matcher.next_match() + } +} + +fn match_indices<'a, M, T: IntoMatcher<'a, M>>(s: &'a str, from: T) -> MatchIndices { + let string_matcher = from.into_matcher(s); + MatchIndices { matcher: string_matcher } +} + +fn main() { + let s = "abcbdef"; + match_indices(s, |c: char| c == 'b') + .collect::>(); +} diff --git a/tests/ui/traits/pointer-type-impls-14254.rs b/tests/ui/traits/pointer-type-impls-14254.rs new file mode 100644 index 00000000000..90ad375c262 --- /dev/null +++ b/tests/ui/traits/pointer-type-impls-14254.rs @@ -0,0 +1,92 @@ +//@ check-pass + +trait Foo: Sized { + fn bar(&self); + fn baz(&self) { } + fn bah(_: Option) { } +} + +struct BarTy { + x : isize, + y : f64, +} + +impl BarTy { + fn a() {} + fn b(&self) {} +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl Foo for *const BarTy { + fn bar(&self) { + self.baz(); + BarTy::a(); + Foo::bah(None::<*const BarTy>); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl<'a> Foo for &'a BarTy { + fn bar(&self) { + self.baz(); + self.x; + self.y; + BarTy::a(); + Foo::bah(None::<&BarTy>); + self.b(); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl<'a> Foo for &'a mut BarTy { + fn bar(&self) { + self.baz(); + self.x; + self.y; + BarTy::a(); + Foo::bah(None::<&mut BarTy>); + self.b(); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl Foo for Box { + fn bar(&self) { + self.baz(); + Foo::bah(None::>); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl Foo for *const isize { + fn bar(&self) { + self.baz(); + Foo::bah(None::<*const isize>); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl<'a> Foo for &'a isize { + fn bar(&self) { + self.baz(); + Foo::bah(None::<&isize>); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl<'a> Foo for &'a mut isize { + fn bar(&self) { + self.baz(); + Foo::bah(None::<&mut isize>); + } +} + +// If these fail, it's necessary to update rustc_resolve and the cfail tests. +impl Foo for Box { + fn bar(&self) { + self.baz(); + Foo::bah(None::>); + } +} + +fn main() {} diff --git a/tests/ui/traits/reader-wrapper-trait-14901.rs b/tests/ui/traits/reader-wrapper-trait-14901.rs new file mode 100644 index 00000000000..ddc12b9ef3c --- /dev/null +++ b/tests/ui/traits/reader-wrapper-trait-14901.rs @@ -0,0 +1,18 @@ +//@ check-pass +pub trait Reader {} + +enum Wrapper<'a> { + WrapReader(&'a (dyn Reader + 'a)) +} + +trait Wrap<'a> { + fn wrap(self) -> Wrapper<'a>; +} + +impl<'a, R: Reader> Wrap<'a> for &'a mut R { + fn wrap(self) -> Wrapper<'a> { + Wrapper::WrapReader(self as &'a mut dyn Reader) + } +} + +pub fn main() {} diff --git a/tests/ui/traits/trait-bound-mismatch-14853.rs b/tests/ui/traits/trait-bound-mismatch-14853.rs new file mode 100644 index 00000000000..4ce6e3174d0 --- /dev/null +++ b/tests/ui/traits/trait-bound-mismatch-14853.rs @@ -0,0 +1,20 @@ +use std::fmt::Debug; + +trait Str {} + +trait Something: Sized { + fn yay(_: Option, thing: &[T]); +} + +struct X { data: u32 } + +impl Something for X { + fn yay(_:Option, thing: &[T]) { + //~^ ERROR E0276 + } +} + +fn main() { + let arr = &["one", "two", "three"]; + println!("{:?}", Something::yay(None::, arr)); +} diff --git a/tests/ui/typeck/str-no-field-desc-14721.rs b/tests/ui/typeck/str-no-field-desc-14721.rs new file mode 100644 index 00000000000..c015a6bab08 --- /dev/null +++ b/tests/ui/typeck/str-no-field-desc-14721.rs @@ -0,0 +1,4 @@ +fn main() { + let foo = "str"; + println!("{}", foo.desc); //~ ERROR no field `desc` on type `&str` +} -- cgit 1.4.1-3-g733a5