Add manual ops::Add impls to test::traits::closure_2

This commit is contained in:
Lukas Wirth 2021-04-10 17:16:35 +02:00
parent 252eb78dc3
commit d9554c258b

View file

@ -1919,10 +1919,26 @@ fn closure_1() {
fn closure_2() {
check_infer_with_mismatches(
r#"
#[lang = "add"]
pub trait Add<Rhs = Self> {
type Output;
fn add(self, rhs: Rhs) -> Self::Output;
}
trait FnOnce<Args> {
type Output;
}
impl Add for u64 {
type Output = Self;
fn add(self, rhs: u64) -> Self::Output {0}
}
impl Add for u128 {
type Output = Self;
fn add(self, rhs: u128) -> Self::Output {0}
}
fn test<F: FnOnce(u32) -> u64>(f: F) {
f(1);
let g = |v| v + 1;
@ -1931,26 +1947,36 @@ fn closure_2() {
}
"#,
expect![[r#"
72..73 'f': F
78..154 '{ ...+ v; }': ()
84..85 'f': F
84..88 'f(1)': {unknown}
86..87 '1': i32
98..99 'g': |u64| -> {unknown}
102..111 '|v| v + 1': |u64| -> {unknown}
103..104 'v': u64
106..107 'v': u64
106..111 'v + 1': {unknown}
110..111 '1': i32
117..118 'g': |u64| -> {unknown}
117..124 'g(1u64)': {unknown}
119..123 '1u64': u64
134..135 'h': |u128| -> u128
138..151 '|v| 1u128 + v': |u128| -> u128
139..140 'v': u128
142..147 '1u128': u128
142..151 '1u128 + v': u128
150..151 'v': u128
72..76 'self': Self
78..81 'rhs': Rhs
203..207 'self': u64
209..212 'rhs': u64
235..238 '{0}': u64
236..237 '0': u64
297..301 'self': u128
303..306 'rhs': u128
330..333 '{0}': u128
331..332 '0': u128
368..369 'f': F
374..450 '{ ...+ v; }': ()
380..381 'f': F
380..384 'f(1)': {unknown}
382..383 '1': i32
394..395 'g': |u64| -> u64
398..407 '|v| v + 1': |u64| -> u64
399..400 'v': u64
402..403 'v': u64
402..407 'v + 1': u64
406..407 '1': u64
413..414 'g': |u64| -> u64
413..420 'g(1u64)': u64
415..419 '1u64': u64
430..431 'h': |u128| -> u128
434..447 '|v| 1u128 + v': |u128| -> u128
435..436 'v': u128
438..443 '1u128': u128
438..447 '1u128 + v': u128
446..447 'v': u128
"#]],
);
}