let node_id = self.tcx.hir.as_local_node_id(id).unwrap();
match self.tcx.hir.find(node_id) {
Some(hir_map::NodeItem(..)) |
- Some(hir_map::NodeImplItem(..)) |
Some(hir_map::NodeTraitItem(..)) => { /* proceed ahead */ }
_ => return false, // inapplicable
// we target only top-level functions
--- /dev/null
+// Copyright 2016 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.
+
+trait Foo {
+
+ fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32;
+
+}
+
+impl Foo for () {
+
+ fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
+
+ if x > y { x } else { y }
+
+ }
+
+}
+
+fn main() {}
--- /dev/null
+error[E0312]: lifetime of reference outlives lifetime of borrowed content...
+ --> $DIR/ex1-return-one-existing-name-if-else-using-impl.rs:21:20
+ |
+21 | if x > y { x } else { y }
+ | ^
+ |
+note: ...the reference is valid for the lifetime 'a as defined on the method body at 19:5...
+ --> $DIR/ex1-return-one-existing-name-if-else-using-impl.rs:19:5
+ |
+19 | / fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
+20 | |
+21 | | if x > y { x } else { y }
+22 | |
+23 | | }
+ | |_____^
+note: ...but the borrowed content is only valid for the anonymous lifetime #1 defined on the method body at 19:5
+ --> $DIR/ex1-return-one-existing-name-if-else-using-impl.rs:19:5
+ |
+19 | / fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
+20 | |
+21 | | if x > y { x } else { y }
+22 | |
+23 | | }
+ | |_____^
+
+error: aborting due to previous error(s)
+