aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/tests
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-07-03 17:18:34 +0100
committerGitHub <[email protected]>2020-07-03 17:18:34 +0100
commit7ad7f3ca8ca7503e3749e93a80ec1b7aa1491e6c (patch)
tree43dbcb044394d4c6c12a183b578abb14b27a5892 /crates/ra_hir_ty/src/tests
parent0f68fed4a0701330e0296f6623567e5584f2f7ba (diff)
parent57feb323f79d1d7f7dd6251d4606ba12a800953a (diff)
Merge #5211
5211: Fix inference of indexing argument (partly) r=flodiebold a=flodiebold We need to add the `T: Index<Arg>` obligation to be resolved later as well, otherwise we can't make inferences about `Arg` later based on the `Index` impls. This still doesn't fix indexing with integer variables though; there's a further problem with Chalk floundering because of the variable, I think. 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/traits.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/crates/ra_hir_ty/src/tests/traits.rs b/crates/ra_hir_ty/src/tests/traits.rs
index 766790576..529d9e253 100644
--- a/crates/ra_hir_ty/src/tests/traits.rs
+++ b/crates/ra_hir_ty/src/tests/traits.rs
@@ -541,6 +541,42 @@ mod ops {
541} 541}
542 542
543#[test] 543#[test]
544fn infer_ops_index_int() {
545 check_types(
546 r#"
547//- /main.rs crate:main deps:std
548struct Bar;
549struct Foo;
550
551impl std::ops::Index<u32> for Bar {
552 type Output = Foo;
553}
554
555struct Range;
556impl std::ops::Index<Range> for Bar {
557 type Output = Bar;
558}
559
560fn test() {
561 let a = Bar;
562 let b = a[1];
563 b;
564 //^ Foo
565}
566
567//- /std.rs crate:std
568#[prelude_import] use ops::*;
569mod ops {
570 #[lang = "index"]
571 pub trait Index<Idx> {
572 type Output;
573 }
574}
575"#,
576 );
577}
578
579#[test]
544fn infer_ops_index_autoderef() { 580fn infer_ops_index_autoderef() {
545 check_types( 581 check_types(
546 r#" 582 r#"