@@ -1919,10 +1919,26 @@ fn closure_1() {
19191919fn 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