about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2014-07-25 15:56:42 -0700
committerPatrick Walton <pcwalton@mimiga.net>2014-07-25 15:58:01 -0700
commit5de8ed541a93310f8fae5384ccbf422a8f2fcdcb (patch)
treee3a72894416924c6abdeb21f6b09a5083f950bec /src/rustllvm/RustWrapper.cpp
parent66a0b528a6601d060095655f31c7d38e2a841511 (diff)
downloadrust-5de8ed541a93310f8fae5384ccbf422a8f2fcdcb.tar.gz
rust-5de8ed541a93310f8fae5384ccbf422a8f2fcdcb.zip
librustc: Resolve regions and report errors in trait/impl method
matching.

This breaks code like:

    struct Foo<'a,'b> {
        x: &'a int,
        y: &'b int,
    }

    trait Tr {
        fn foo(x: Self) {}
    }

    impl<'a,'b> Tr for Foo<'a,'b> {
        fn foo(x: Foo<'b,'a>) {} // <-- bad
    }

Change this code to not contain a lifetime mismatch error. For example:

    struct Foo<'a,'b> {
        x: &'a int,
        y: &'b int,
    }

    trait Tr {
        fn foo(x: Self) {}
    }

    impl<'a,'b> Tr for Foo<'a,'b> {
        fn foo(x: Foo<'a,'b>) {} // OK
    }

Closes #15517.

[breaking-change]
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions