rust/tests/ui/inference/deref-suggestion.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

85 lines
1.4 KiB
Rust
Raw Normal View History

2017-08-14 22:21:36 +00:00
macro_rules! borrow {
($x:expr) => { &$x }
2017-08-14 22:21:36 +00:00
}
fn foo(_: String) {}
fn foo2(s: &String) {
2018-08-26 23:54:06 +00:00
foo(s);
//~^ ERROR mismatched types
2017-08-14 22:21:36 +00:00
}
fn foo3(_: u32) {}
fn foo4(u: &u32) {
2018-08-26 23:54:06 +00:00
foo3(u);
//~^ ERROR mismatched types
2017-08-14 22:21:36 +00:00
}
struct S<'a> {
u: &'a u32,
}
struct R {
i: u32,
}
2017-08-14 22:21:36 +00:00
fn main() {
let s = String::new();
let r_s = &s;
foo2(r_s);
2018-08-26 23:54:06 +00:00
foo(&"aaa".to_owned());
//~^ ERROR mismatched types
foo(&mut "aaa".to_owned());
//~^ ERROR mismatched types
2017-08-14 22:21:36 +00:00
foo3(borrow!(0));
//~^ ERROR mismatched types
2017-08-14 22:21:36 +00:00
foo4(&0);
2018-08-26 23:54:06 +00:00
assert_eq!(3i32, &3i32);
//~^ ERROR mismatched types
let u = 3;
let s = S { u };
//~^ ERROR mismatched types
2019-03-27 02:07:15 +00:00
let s = S { u: u };
//~^ ERROR mismatched types
let i = &4;
let r = R { i };
//~^ ERROR mismatched types
2019-03-27 02:07:15 +00:00
let r = R { i: i };
//~^ ERROR mismatched types
2020-12-06 00:14:21 +00:00
let a = &1;
let b = &2;
let val: i32 = if true {
a + 1
} else {
b
//~^ ERROR mismatched types
};
let val: i32 = if true {
let _ = 2;
a + 1
} else {
let _ = 2;
b
//~^ ERROR mismatched types
};
let val = if true {
*a
} else if true {
//~^ ERROR incompatible types
b
} else {
&0
};
#[derive(PartialEq, Eq)]
struct Foo;
let foo = Foo;
let bar = &Foo;
if foo == bar {
//~^ ERROR mismatched types
}
2018-08-27 01:03:57 +00:00
}