diff options
Diffstat (limited to 'src/test/ui')
| -rw-r--r-- | src/test/ui/deref-patterns/default-infer.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/deref-patterns/gate.stderr | 2 | ||||
| -rw-r--r-- | src/test/ui/deref-patterns/mir.rs | 12 | ||||
| -rw-r--r-- | src/test/ui/deref-patterns/mir.stdout | 99 | ||||
| -rw-r--r-- | src/test/ui/deref-patterns/refs.rs | 18 |
5 files changed, 28 insertions, 112 deletions
diff --git a/src/test/ui/deref-patterns/default-infer.rs b/src/test/ui/deref-patterns/default-infer.rs new file mode 100644 index 00000000000..b7155b7efff --- /dev/null +++ b/src/test/ui/deref-patterns/default-infer.rs @@ -0,0 +1,9 @@ +// check-pass +#![feature(deref_patterns)] + +fn main() { + match <_ as Default>::default() { + "" => (), + _ => unreachable!(), + } +} diff --git a/src/test/ui/deref-patterns/gate.stderr b/src/test/ui/deref-patterns/gate.stderr index 7ffd0eb7e6c..993468b5e82 100644 --- a/src/test/ui/deref-patterns/gate.stderr +++ b/src/test/ui/deref-patterns/gate.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/gate.rs:3:9 + --> $DIR/gate.rs:4:9 | LL | match String::new() { | ------------- this expression has type `String` diff --git a/src/test/ui/deref-patterns/mir.rs b/src/test/ui/deref-patterns/mir.rs deleted file mode 100644 index 2e7d26d0dfd..00000000000 --- a/src/test/ui/deref-patterns/mir.rs +++ /dev/null @@ -1,12 +0,0 @@ -// compile-flags: -Z unpretty=mir -// build-pass -#![feature(deref_patterns)] - -fn main() { - let s = Some(String::new()); - let a; - match s { - Some("a") => a = 1234, - s => a = 4321, - } -} diff --git a/src/test/ui/deref-patterns/mir.stdout b/src/test/ui/deref-patterns/mir.stdout deleted file mode 100644 index e73d37efb24..00000000000 --- a/src/test/ui/deref-patterns/mir.stdout +++ /dev/null @@ -1,99 +0,0 @@ -// WARNING: This output format is intended for human consumers only -// and is subject to change without notice. Knock yourself out. -fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mir.rs:5:11: 5:11 - let _1: std::option::Option<std::string::String>; // in scope 0 at $DIR/mir.rs:6:9: 6:10 - let mut _2: std::string::String; // in scope 0 at $DIR/mir.rs:6:18: 6:31 - let mut _4: &std::string::String; // in scope 0 at $DIR/mir.rs:9:14: 9:17 - let mut _5: &str; // in scope 0 at $DIR/mir.rs:9:14: 9:17 - let mut _6: bool; // in scope 0 at $DIR/mir.rs:9:14: 9:17 - let mut _7: isize; // in scope 0 at $DIR/mir.rs:9:9: 9:18 - let mut _9: bool; // in scope 0 at $DIR/mir.rs:12:1: 12:2 - scope 1 { - debug s => _1; // in scope 1 at $DIR/mir.rs:6:9: 6:10 - let _3: i32; // in scope 1 at $DIR/mir.rs:7:9: 7:10 - scope 2 { - debug a => _3; // in scope 2 at $DIR/mir.rs:7:9: 7:10 - let _8: std::option::Option<std::string::String>; // in scope 2 at $DIR/mir.rs:10:9: 10:10 - scope 3 { - debug s => _8; // in scope 3 at $DIR/mir.rs:10:9: 10:10 - } - } - } - - bb0: { - _9 = const false; // scope 0 at $DIR/mir.rs:6:9: 6:10 - _2 = String::new() -> bb1; // scope 0 at $DIR/mir.rs:6:18: 6:31 - // mir::Constant - // + span: $DIR/mir.rs:6:18: 6:29 - // + literal: Const { ty: fn() -> String {String::new}, val: Value(Scalar(<ZST>)) } - } - - bb1: { - _9 = const true; // scope 0 at $DIR/mir.rs:6:13: 6:32 - Deinit(_1); // scope 0 at $DIR/mir.rs:6:13: 6:32 - ((_1 as Some).0: std::string::String) = move _2; // scope 0 at $DIR/mir.rs:6:13: 6:32 - discriminant(_1) = 1; // scope 0 at $DIR/mir.rs:6:13: 6:32 - _7 = discriminant(_1); // scope 2 at $DIR/mir.rs:8:11: 8:12 - switchInt(move _7) -> [1_isize: bb3, otherwise: bb2]; // scope 2 at $DIR/mir.rs:8:5: 8:12 - } - - bb2: { - _9 = const false; // scope 2 at $DIR/mir.rs:10:9: 10:10 - _8 = move _1; // scope 2 at $DIR/mir.rs:10:9: 10:10 - _3 = const 4321_i32; // scope 3 at $DIR/mir.rs:10:14: 10:22 - drop(_8) -> [return: bb7, unwind: bb12]; // scope 2 at $DIR/mir.rs:10:21: 10:22 - } - - bb3: { - _4 = &((_1 as Some).0: std::string::String); // scope 2 at $DIR/mir.rs:9:14: 9:17 - _5 = <String as Deref>::deref(move _4) -> bb4; // scope 2 at $DIR/mir.rs:9:14: 9:17 - // mir::Constant - // + span: $DIR/mir.rs:9:14: 9:17 - // + literal: Const { ty: for<'r> fn(&'r String) -> &'r <String as Deref>::Target {<String as Deref>::deref}, val: Value(Scalar(<ZST>)) } - } - - bb4: { - _6 = <str as PartialEq>::eq(_5, const "a") -> [return: bb5, unwind: bb12]; // scope 2 at $DIR/mir.rs:9:14: 9:17 - // mir::Constant - // + span: $DIR/mir.rs:9:14: 9:17 - // + literal: Const { ty: for<'r, 's> fn(&'r str, &'s str) -> bool {<str as PartialEq>::eq}, val: Value(Scalar(<ZST>)) } - // mir::Constant - // + span: $DIR/mir.rs:9:14: 9:17 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - } - - bb5: { - switchInt(move _6) -> [false: bb2, otherwise: bb6]; // scope 2 at $DIR/mir.rs:9:14: 9:17 - } - - bb6: { - _3 = const 1234_i32; // scope 2 at $DIR/mir.rs:9:22: 9:30 - goto -> bb7; // scope 2 at $DIR/mir.rs:9:22: 9:30 - } - - bb7: { - switchInt(_9) -> [false: bb8, otherwise: bb10]; // scope 0 at $DIR/mir.rs:12:1: 12:2 - } - - bb8: { - _9 = const false; // scope 0 at $DIR/mir.rs:12:1: 12:2 - return; // scope 0 at $DIR/mir.rs:12:2: 12:2 - } - - bb9 (cleanup): { - resume; // scope 0 at $DIR/mir.rs:5:1: 12:2 - } - - bb10: { - drop(_1) -> bb8; // scope 0 at $DIR/mir.rs:12:1: 12:2 - } - - bb11 (cleanup): { - drop(_1) -> bb9; // scope 0 at $DIR/mir.rs:12:1: 12:2 - } - - bb12 (cleanup): { - switchInt(_9) -> [false: bb9, otherwise: bb11]; // scope 0 at $DIR/mir.rs:12:1: 12:2 - } -} diff --git a/src/test/ui/deref-patterns/refs.rs b/src/test/ui/deref-patterns/refs.rs new file mode 100644 index 00000000000..6dac46c05fd --- /dev/null +++ b/src/test/ui/deref-patterns/refs.rs @@ -0,0 +1,18 @@ +// check-pass +#![feature(deref_patterns)] + +fn foo(s: &String) -> i32 { + match *s { + "a" => 42, + _ => -1, + } +} + +fn bar(s: Option<&&&&String>) -> i32 { + match s { + Some(&&&&"&&&&") => 1, + _ => -1, + } +} + +fn main() {} |
