mirror of https://github.com/rust-lang/rust
40 lines
1.1 KiB
Rust
40 lines
1.1 KiB
Rust
fn add(a: i32, b: i32) -> i32 {
|
|
a + b
|
|
}
|
|
fn main() {
|
|
// We shouldn't coerce capturing closure to a function
|
|
let cap = 0;
|
|
let _ = match "+" {
|
|
"+" => add,
|
|
"-" => |a, b| (a - b + cap) as i32,
|
|
_ => unimplemented!(),
|
|
};
|
|
//~^^^ ERROR `match` arms have incompatible types
|
|
|
|
|
|
// We shouldn't coerce capturing closure to a non-capturing closure
|
|
let _ = match "+" {
|
|
"+" => |a, b| (a + b) as i32,
|
|
"-" => |a, b| (a - b + cap) as i32,
|
|
_ => unimplemented!(),
|
|
};
|
|
//~^^^ ERROR `match` arms have incompatible types
|
|
|
|
|
|
// We shouldn't coerce non-capturing closure to a capturing closure
|
|
let _ = match "+" {
|
|
"+" => |a, b| (a + b + cap) as i32,
|
|
"-" => |a, b| (a - b) as i32,
|
|
_ => unimplemented!(),
|
|
};
|
|
//~^^^ ERROR `match` arms have incompatible types
|
|
|
|
// We shouldn't coerce capturing closure to a capturing closure
|
|
let _ = match "+" {
|
|
"+" => |a, b| (a + b + cap) as i32,
|
|
"-" => |a, b| (a - b + cap) as i32,
|
|
_ => unimplemented!(),
|
|
};
|
|
//~^^^ ERROR `match` arms have incompatible types
|
|
}
|