| // gate-test-deref_patterns |
| |
| fn main() { |
| match Box::new(0) { |
| deref!(0) => {} |
| //~^ ERROR: use of unstable library feature `deref_patterns`: placeholder syntax for deref patterns |
| _ => {} |
| } |
| |
| match Box::new(0) { |
| 0 => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| |
| // `deref_patterns` allows string and byte string literals to have non-ref types. |
| match *"test" { |
| "test" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| match *b"test" { |
| b"test" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| match *(b"test" as &[u8]) { |
| b"test" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| |
| // `deref_patterns` allows string and byte string patterns to implicitly peel references. |
| match &"str" { |
| "str" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| match &b"str" { |
| b"str" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| match "str".to_owned() { |
| "str" => {} |
| //~^ ERROR: mismatched types |
| _ => {} |
| } |
| |
| // `deref_patterns` allows string and byte string patterns to match on mutable references. |
| // See also `tests/ui/pattern/byte-string-mutability-mismatch.rs`. |
| if let "str" = &mut *"str".to_string() {} |
| //~^ ERROR mismatched types |
| if let b"str" = &mut b"str".clone() {} |
| //~^ ERROR mismatched types |
| if let b"str" = &mut b"str".clone()[..] {} |
| //~^ ERROR mismatched types |
| } |