File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
src/tools/rust-analyzer/crates/hir-ty/src/tests/regression Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -128,6 +128,40 @@ trait T2: Sized {
128
128
) ;
129
129
}
130
130
131
+ #[ test]
132
+ fn regression_type_checker_does_not_eagerly_select_predicates_from_where_clauses ( ) {
133
+ // This was a very long standing issue (#5514) with a lot of duplicates, that was
134
+ // fixed by the switch to the new trait solver, so it deserves a long name and a
135
+ // honorable mention.
136
+ check_infer (
137
+ r#"
138
+ //- minicore: from
139
+
140
+ struct Foo;
141
+ impl Foo {
142
+ fn method(self) -> i32 { 0 }
143
+ }
144
+
145
+ fn f<T: Into<Foo>>(u: T) {
146
+ let x = u.into();
147
+ x.method();
148
+ }
149
+ "# ,
150
+ expect ! [ [ r#"
151
+ 38..42 'self': Foo
152
+ 51..56 '{ 0 }': i32
153
+ 53..54 '0': i32
154
+ 79..80 'u': T
155
+ 85..126 '{ ...d(); }': ()
156
+ 95..96 'x': Foo
157
+ 99..100 'u': T
158
+ 99..107 'u.into()': Foo
159
+ 113..114 'x': Foo
160
+ 113..123 'x.method()': i32
161
+ "# ] ] ,
162
+ ) ;
163
+ }
164
+
131
165
#[ test]
132
166
fn opaque_generics ( ) {
133
167
check_infer (
You can’t perform that action at this time.
0 commit comments