Fix ICE and find correct return span.

This commit fixes an ICE and determines the correct return span in cases
with a method implemented on a struct with an an elided lifetime.
This commit is contained in:
David Wood 2018-11-09 15:39:32 +01:00
parent 653da4fd00
commit e6a466e60c
No known key found for this signature in database
GPG key ID: 01760B4F9F53F154
3 changed files with 55 additions and 16 deletions

View file

@ -0,0 +1,25 @@
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(nll)]
struct Bar;
struct Foo<'s> {
bar: &'s mut Bar,
}
impl Foo<'_> {
fn new(bar: &mut Bar) -> Self {
Foo { bar }
}
}
fn main() { }

View file

@ -0,0 +1,12 @@
error: unsatisfied lifetime constraints
--> $DIR/issue-55394.rs:21:9
|
LL | fn new(bar: &mut Bar) -> Self {
| - ---- return type is Foo<'2>
| |
| let's call the lifetime of this reference `'1`
LL | Foo { bar }
| ^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
error: aborting due to previous error