@@ -2042,6 +2042,80 @@ mod method_determined_by_argument_type {
2042
2042
}
2043
2043
}
2044
2044
2045
+ trait MyFrom < T > {
2046
+ // MyFrom::my_from
2047
+ fn my_from ( value : T ) -> Self ;
2048
+ }
2049
+
2050
+ impl MyFrom < i64 > for i64 {
2051
+ // MyFrom<i64>::my_from
2052
+ fn my_from ( value : i64 ) -> Self {
2053
+ value
2054
+ }
2055
+ }
2056
+
2057
+ impl MyFrom < bool > for i64 {
2058
+ // MyFrom<bool>::my_from
2059
+ fn my_from ( value : bool ) -> Self {
2060
+ if value { 1 } else { 0 }
2061
+ }
2062
+ }
2063
+
2064
+ trait MyFrom2 < T > {
2065
+ // MyFrom2::my_from2
2066
+ fn my_from2 ( value : T , x : Self ) -> ( ) ;
2067
+ }
2068
+
2069
+ impl MyFrom2 < i64 > for i64 {
2070
+ // MyFrom2<i64>::my_from2
2071
+ fn my_from2 ( value : i64 , _: Self ) -> ( ) {
2072
+ value;
2073
+ }
2074
+ }
2075
+
2076
+ impl MyFrom2 < bool > for i64 {
2077
+ // MyFrom2<bool>::my_from2
2078
+ fn my_from2 ( value : bool , _: Self ) -> ( ) {
2079
+ if value {
2080
+ 1
2081
+ } else {
2082
+ 0
2083
+ } ;
2084
+ }
2085
+ }
2086
+
2087
+ trait MySelfTrait {
2088
+ // MySelfTrait::f1
2089
+ fn f1 ( x : Self ) -> i64 ;
2090
+
2091
+ // MySelfTrait::f2
2092
+ fn f2 ( x : Self ) -> Self ;
2093
+ }
2094
+
2095
+ impl MySelfTrait for i64 {
2096
+ // MySelfTrait<i64>::f1
2097
+ fn f1 ( x : Self ) -> i64 {
2098
+ x + 1
2099
+ }
2100
+
2101
+ // MySelfTrait<i64>::f2
2102
+ fn f2 ( x : Self ) -> Self {
2103
+ x + 1
2104
+ }
2105
+ }
2106
+
2107
+ impl MySelfTrait for bool {
2108
+ // MySelfTrait<bool>::f1
2109
+ fn f1 ( x : Self ) -> i64 {
2110
+ 0
2111
+ }
2112
+
2113
+ // MySelfTrait<bool>::f2
2114
+ fn f2 ( x : Self ) -> Self {
2115
+ x
2116
+ }
2117
+ }
2118
+
2045
2119
pub fn f ( ) {
2046
2120
let x: i64 = 73 ;
2047
2121
x. my_add ( 5i64 ) ; // $ method=MyAdd<i64>::my_add
@@ -2051,6 +2125,22 @@ mod method_determined_by_argument_type {
2051
2125
S ( 1i64 ) . my_add ( S ( 2i64 ) ) ; // $ method=S::my_add1
2052
2126
S ( 1i64 ) . my_add ( 3i64 ) ; // $ MISSING: method=S::my_add2
2053
2127
S ( 1i64 ) . my_add ( & 3i64 ) ; // $ method=S::my_add3
2128
+
2129
+ let x = i64:: my_from ( 73i64 ) ; // $ method=MyFrom<i64>::my_from $ SPURIOUS: method=MyFrom<bool>::my_from
2130
+ let y = i64:: my_from ( true ) ; // $ method=MyFrom<bool>::my_from $ SPURIOUS: method=MyFrom<i64>::my_from
2131
+ let z: i64 = MyFrom :: my_from ( 73i64 ) ; // $ MISSING: method=MyFrom<i64>::my_from $ SPURIOUS: method=MyFrom::my_from
2132
+ i64:: my_from2 ( 73i64 , 0i64 ) ; // $ method=MyFrom2<i64>::my_from2 $ SPURIOUS: method=MyFrom2<bool>::my_from2
2133
+ i64:: my_from2 ( true , 0i64 ) ; // $ method=MyFrom2<bool>::my_from2 $ SPURIOUS: method=MyFrom2<i64>::my_from2
2134
+ MyFrom2 :: my_from2 ( 73i64 , 0i64 ) ; // $ MISSING: method=MyFrom2<i64>::my_from2 $ SPURIOUS: method=MyFrom2::my_from2
2135
+
2136
+ i64:: f1 ( 73i64 ) ; // $ method=MySelfTrait<i64>::f1
2137
+ i64:: f2 ( 73i64 ) ; // $ method=MySelfTrait<i64>::f2
2138
+ bool:: f1 ( true ) ; // $ method=MySelfTrait<bool>::f1
2139
+ bool:: f2 ( true ) ; // $ method=MySelfTrait<bool>::f2
2140
+ MySelfTrait :: f1 ( 73i64 ) ; // $ SPURIOUS method=MySelfTrait::f1 MISSING: method=MySelfTrait<i64>::f1
2141
+ MySelfTrait :: f2 ( 73i64 ) ; // $ SPURIOUS method=MySelfTrait::f2 MISSING: method=MySelfTrait<i64>::f2
2142
+ MySelfTrait :: f1 ( true ) ; // $ SPURIOUS method=MySelfTrait::f1 MISSING: method=MySelfTrait<bool>::f1
2143
+ MySelfTrait :: f2 ( true ) ; // $ SPURIOUS method=MySelfTrait::f2 MISSING: method=MySelfTrait<bool>::f2
2054
2144
}
2055
2145
}
2056
2146
0 commit comments