Skip to content

Commit

Permalink
Regression test for #32382.
Browse files Browse the repository at this point in the history
  • Loading branch information
pnkfelix committed Oct 4, 2018
1 parent 088fc73 commit 594655b
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/test/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs
@@ -0,0 +1,42 @@
#![feature(nll)]
// compile-pass

// rust-lang/rust#32382: Borrow checker used to complain about
// `foobar_3` in the `impl` below, presumably due to some interaction
// between the use of a lifetime in the associated type and the use of
// the overloaded operator[]. This regression test ensures that we do
// not resume complaining about it in the future.


use std::marker::PhantomData;
use std::ops::Index;

pub trait Context: Clone {
type Container: ?Sized;
fn foobar_1( container: &Self::Container ) -> &str;
fn foobar_2( container: &Self::Container ) -> &str;
fn foobar_3( container: &Self::Container ) -> &str;
}

#[derive(Clone)]
struct Foobar<'a> {
phantom: PhantomData<&'a ()>
}

impl<'a> Context for Foobar<'a> {
type Container = [&'a str];

fn foobar_1<'r>( container: &'r [&'a str] ) -> &'r str {
container[0]
}

fn foobar_2<'r>( container: &'r Self::Container ) -> &'r str {
container.index( 0 )
}

fn foobar_3<'r>( container: &'r Self::Container ) -> &'r str {
container[0]
}
}

fn main() { }

0 comments on commit 594655b

Please sign in to comment.