From 4a0469e3d70868db7ab27841e57080cff8e546b3 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 19 Jun 2013 12:32:56 -0400 Subject: [PATCH] Add copyright notice and kill broken test --- src/librustc/middle/typeck/infer/doc.rs | 10 ++++++++++ .../regions-free-region-ordering-incorrect.rs} | 11 +++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) rename src/test/{run-pass/issue-4325.rs => compile-fail/regions-free-region-ordering-incorrect.rs} (60%) diff --git a/src/librustc/middle/typeck/infer/doc.rs b/src/librustc/middle/typeck/infer/doc.rs index 16d0f2cc18b..11bfbc63716 100644 --- a/src/librustc/middle/typeck/infer/doc.rs +++ b/src/librustc/middle/typeck/infer/doc.rs @@ -1,3 +1,13 @@ +// Copyright 2012 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + /*! # Type inference engine diff --git a/src/test/run-pass/issue-4325.rs b/src/test/compile-fail/regions-free-region-ordering-incorrect.rs similarity index 60% rename from src/test/run-pass/issue-4325.rs rename to src/test/compile-fail/regions-free-region-ordering-incorrect.rs index 8e65c15f1c4..c2bd64fddaf 100644 --- a/src/test/run-pass/issue-4325.rs +++ b/src/test/compile-fail/regions-free-region-ordering-incorrect.rs @@ -8,16 +8,23 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// Test that free regions ordering only goes one way. That is, +// we have `&'a Node<'self, T>`, which implies that `'a <= 'self`, +// but not `'self <= 'a`. Hence returning `&self.val` (which has lifetime +// `'a`) where `'self` is expected yields an error. +// +// This test began its life as a test for issue #4325. + struct Node<'self, T> { val: T, next: Option<&'self Node<'self, T>> } impl<'self, T> Node<'self, T> { - fn get(&self) -> &'self T { + fn get<'a>(&'a self) -> &'self T { match self.next { Some(ref next) => next.get(), - None => &self.val + None => &self.val //~ ERROR cannot infer an appropriate lifetime } } }