Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #20667 from ChayimFriedman2/ns-cleanup2
internal: Add Regression Test For The One And The Only Issue #5514
Chayim Refael Friedman 7 months ago
parent 6f9a6ba · parent b9797aa · commit 622b267
-rw-r--r--crates/hir-ty/src/tests/regression/new_solver.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/regression/new_solver.rs b/crates/hir-ty/src/tests/regression/new_solver.rs
index f559230fee..82d670cef2 100644
--- a/crates/hir-ty/src/tests/regression/new_solver.rs
+++ b/crates/hir-ty/src/tests/regression/new_solver.rs
@@ -129,6 +129,40 @@ trait T2: Sized {
}
#[test]
+fn regression_type_checker_does_not_eagerly_select_predicates_from_where_clauses() {
+ // This was a very long standing issue (#5514) with a lot of duplicates, that was
+ // fixed by the switch to the new trait solver, so it deserves a long name and a
+ // honorable mention.
+ check_infer(
+ r#"
+//- minicore: from
+
+struct Foo;
+impl Foo {
+ fn method(self) -> i32 { 0 }
+}
+
+fn f<T: Into<Foo>>(u: T) {
+ let x = u.into();
+ x.method();
+}
+ "#,
+ expect![[r#"
+ 38..42 'self': Foo
+ 51..56 '{ 0 }': i32
+ 53..54 '0': i32
+ 79..80 'u': T
+ 85..126 '{ ...d(); }': ()
+ 95..96 'x': Foo
+ 99..100 'u': T
+ 99..107 'u.into()': Foo
+ 113..114 'x': Foo
+ 113..123 'x.method()': i32
+ "#]],
+ );
+}
+
+#[test]
fn opaque_generics() {
check_infer(
r#"