rust/src/test/ui/nll/issue-52534-1.rs
David Wood ef10e94993
Correctly handle named lifetimes.
Enhances annotation logic to properly consider named lifetimes where
lifetime elision rules that were previously implemented would not apply.

Further, adds new help and note messages to diagnostics and highlights
only lifetime when dealing with named lifetimes.
2018-09-23 14:18:35 +02:00

54 lines
1.0 KiB
Rust

// Copyright 2018 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)]
#![allow(warnings)]
struct Test;
impl Test {
fn bar(&self, x: &u32) -> &u32 {
let x = 22;
&x
}
}
fn foo(x: &u32) -> &u32 {
let x = 22;
&x
}
fn baz(x: &u32) -> &&u32 {
let x = 22;
&&x
}
fn foobazbar<'a>(x: u32, y: &'a u32) -> &'a u32 {
let x = 22;
&x
}
fn foobar<'a>(x: &'a u32) -> &'a u32 {
let x = 22;
&x
}
fn foobaz<'a, 'b>(x: &'a u32, y: &'b u32) -> &'a u32 {
let x = 22;
&x
}
fn foobarbaz<'a, 'b>(x: &'a u32, y: &'b u32, z: &'a u32) -> &'a u32 {
let x = 22;
&x
}
fn main() { }