Skip to content

Commit d9554c2

Browse files
committed
Add manual ops::Add impls to test::traits::closure_2
1 parent 252eb78 commit d9554c2

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

crates/hir_ty/src/tests/traits.rs

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1919,10 +1919,26 @@ fn closure_1() {
19191919
fn closure_2() {
19201920
check_infer_with_mismatches(
19211921
r#"
1922+
#[lang = "add"]
1923+
pub trait Add<Rhs = Self> {
1924+
type Output;
1925+
fn add(self, rhs: Rhs) -> Self::Output;
1926+
}
1927+
19221928
trait FnOnce<Args> {
19231929
type Output;
19241930
}
19251931
1932+
impl Add for u64 {
1933+
type Output = Self;
1934+
fn add(self, rhs: u64) -> Self::Output {0}
1935+
}
1936+
1937+
impl Add for u128 {
1938+
type Output = Self;
1939+
fn add(self, rhs: u128) -> Self::Output {0}
1940+
}
1941+
19261942
fn test<F: FnOnce(u32) -> u64>(f: F) {
19271943
f(1);
19281944
let g = |v| v + 1;
@@ -1931,26 +1947,36 @@ fn closure_2() {
19311947
}
19321948
"#,
19331949
expect![[r#"
1934-
72..73 'f': F
1935-
78..154 '{ ...+ v; }': ()
1936-
84..85 'f': F
1937-
84..88 'f(1)': {unknown}
1938-
86..87 '1': i32
1939-
98..99 'g': |u64| -> {unknown}
1940-
102..111 '|v| v + 1': |u64| -> {unknown}
1941-
103..104 'v': u64
1942-
106..107 'v': u64
1943-
106..111 'v + 1': {unknown}
1944-
110..111 '1': i32
1945-
117..118 'g': |u64| -> {unknown}
1946-
117..124 'g(1u64)': {unknown}
1947-
119..123 '1u64': u64
1948-
134..135 'h': |u128| -> u128
1949-
138..151 '|v| 1u128 + v': |u128| -> u128
1950-
139..140 'v': u128
1951-
142..147 '1u128': u128
1952-
142..151 '1u128 + v': u128
1953-
150..151 'v': u128
1950+
72..76 'self': Self
1951+
78..81 'rhs': Rhs
1952+
203..207 'self': u64
1953+
209..212 'rhs': u64
1954+
235..238 '{0}': u64
1955+
236..237 '0': u64
1956+
297..301 'self': u128
1957+
303..306 'rhs': u128
1958+
330..333 '{0}': u128
1959+
331..332 '0': u128
1960+
368..369 'f': F
1961+
374..450 '{ ...+ v; }': ()
1962+
380..381 'f': F
1963+
380..384 'f(1)': {unknown}
1964+
382..383 '1': i32
1965+
394..395 'g': |u64| -> u64
1966+
398..407 '|v| v + 1': |u64| -> u64
1967+
399..400 'v': u64
1968+
402..403 'v': u64
1969+
402..407 'v + 1': u64
1970+
406..407 '1': u64
1971+
413..414 'g': |u64| -> u64
1972+
413..420 'g(1u64)': u64
1973+
415..419 '1u64': u64
1974+
430..431 'h': |u128| -> u128
1975+
434..447 '|v| 1u128 + v': |u128| -> u128
1976+
435..436 'v': u128
1977+
438..443 '1u128': u128
1978+
438..447 '1u128 + v': u128
1979+
446..447 'v': u128
19541980
"#]],
19551981
);
19561982
}

0 commit comments

Comments
 (0)