diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-12-23 10:58:06 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2019-12-23 10:58:06 +0000 |
commit | ce07a2daa9e53aa86a769f8641b14c2878444fbc (patch) | |
tree | fc5802a209c642e862171a1d022634eefd2a03a9 /crates/ra_hir_ty/src/tests | |
parent | 31c5888a4c0913c44d13f25f8cb79e0701e84f71 (diff) | |
parent | 1f7f4578f72721c1b0e17e8405f986fd2ce89aaf (diff) |
Merge #2636
2636: Chalk update and refactoring r=flodiebold a=flodiebold
This updates the Chalk integration to https://github.com/rust-lang/chalk/pull/311, which will presumably get merged soon, and refactors it some more, most notably introducing our own `TypeFamily` instead of reusing `ChalkIr`. It's still mostly the same as `ChalkIr` though, except for using Salsa `InternId`s directly.
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/ra_hir_ty/src/tests')
-rw-r--r-- | crates/ra_hir_ty/src/tests/method_resolution.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/traits.rs | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/tests/method_resolution.rs b/crates/ra_hir_ty/src/tests/method_resolution.rs index 45164c9e9..ce9a06fde 100644 --- a/crates/ra_hir_ty/src/tests/method_resolution.rs +++ b/crates/ra_hir_ty/src/tests/method_resolution.rs | |||
@@ -865,7 +865,7 @@ mod foo { | |||
865 | 865 | ||
866 | #[test] | 866 | #[test] |
867 | fn method_resolution_where_clause_for_unknown_trait() { | 867 | fn method_resolution_where_clause_for_unknown_trait() { |
868 | // The blanket impl shouldn't apply because we can't even resolve UnknownTrait | 868 | // The blanket impl currently applies because we ignore the unresolved where clause |
869 | let t = type_at( | 869 | let t = type_at( |
870 | r#" | 870 | r#" |
871 | //- /main.rs | 871 | //- /main.rs |
@@ -875,7 +875,7 @@ impl<T> Trait for T where T: UnknownTrait {} | |||
875 | fn test() { (&S).foo()<|>; } | 875 | fn test() { (&S).foo()<|>; } |
876 | "#, | 876 | "#, |
877 | ); | 877 | ); |
878 | assert_eq!(t, "{unknown}"); | 878 | assert_eq!(t, "u128"); |
879 | } | 879 | } |
880 | 880 | ||
881 | #[test] | 881 | #[test] |
diff --git a/crates/ra_hir_ty/src/tests/traits.rs b/crates/ra_hir_ty/src/tests/traits.rs index 76e2198b6..ae316922b 100644 --- a/crates/ra_hir_ty/src/tests/traits.rs +++ b/crates/ra_hir_ty/src/tests/traits.rs | |||
@@ -959,6 +959,23 @@ fn test() { | |||
959 | } | 959 | } |
960 | 960 | ||
961 | #[test] | 961 | #[test] |
962 | fn error_bound_chalk() { | ||
963 | let t = type_at( | ||
964 | r#" | ||
965 | //- /main.rs | ||
966 | trait Trait { | ||
967 | fn foo(&self) -> u32 {} | ||
968 | } | ||
969 | |||
970 | fn test(x: (impl Trait + UnknownTrait)) { | ||
971 | x.foo()<|>; | ||
972 | } | ||
973 | "#, | ||
974 | ); | ||
975 | assert_eq!(t, "u32"); | ||
976 | } | ||
977 | |||
978 | #[test] | ||
962 | fn assoc_type_bindings() { | 979 | fn assoc_type_bindings() { |
963 | assert_snapshot!( | 980 | assert_snapshot!( |
964 | infer(r#" | 981 | infer(r#" |