diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-12-10 22:47:55 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-12-14 23:23:07 +0300 |
| commit | d4e51a8fb286444a8c276a05a1c3ba6ba8ca6576 (patch) | |
| tree | 242ff95d0af269023f4cd5dd1df92fec60ca346d /src/test/compile-fail/lint-unconditional-recursion.rs | |
| parent | 3a2ad576c5d4b92bacc3355b14cc7a9bc704c782 (diff) | |
| download | rust-d4e51a8fb286444a8c276a05a1c3ba6ba8ca6576.tar.gz rust-d4e51a8fb286444a8c276a05a1c3ba6ba8ca6576.zip | |
Move compile-fail tests with NOTE/HELP annotations to UI
Diffstat (limited to 'src/test/compile-fail/lint-unconditional-recursion.rs')
| -rw-r--r-- | src/test/compile-fail/lint-unconditional-recursion.rs | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/src/test/compile-fail/lint-unconditional-recursion.rs b/src/test/compile-fail/lint-unconditional-recursion.rs deleted file mode 100644 index bee5a2c45be..00000000000 --- a/src/test/compile-fail/lint-unconditional-recursion.rs +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2014 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. - -#![deny(unconditional_recursion)] -//~^ NOTE lint level defined here - -#![allow(dead_code)] -fn foo() { //~ ERROR function cannot return without recurring - foo(); //~ NOTE recursive call site -} - -fn bar() { - if true { - bar() - } -} - -fn baz() { //~ ERROR function cannot return without recurring - if true { - baz() //~ NOTE recursive call site - } else { - baz() //~ NOTE recursive call site - } -} - -fn qux() { - loop {} -} - -fn quz() -> bool { //~ ERROR function cannot return without recurring - if true { - while quz() {} //~ NOTE recursive call site - true - } else { - loop { quz(); } //~ NOTE recursive call site - } -} - -// Trait method calls. -trait Foo { - fn bar(&self) { //~ ERROR function cannot return without recurring - self.bar() //~ NOTE recursive call site - } -} - -impl Foo for Box<Foo+'static> { - fn bar(&self) { //~ ERROR function cannot return without recurring - loop { - self.bar() //~ NOTE recursive call site - } - } -} - -// Trait method call with integer fallback after method resolution. -impl Foo for i32 { - fn bar(&self) { //~ ERROR function cannot return without recurring - 0.bar() //~ NOTE recursive call site - } -} - -impl Foo for u32 { - fn bar(&self) { - 0.bar() - } -} - -// Trait method calls via paths. -trait Foo2 { - fn bar(&self) { //~ ERROR function cannot return without recurring - Foo2::bar(self) //~ NOTE recursive call site - } -} - -impl Foo2 for Box<Foo2+'static> { - fn bar(&self) { //~ ERROR function cannot return without recurring - loop { - Foo2::bar(self) //~ NOTE recursive call site - } - } -} - -struct Baz; -impl Baz { - // Inherent method call. - fn qux(&self) { //~ ERROR function cannot return without recurring - self.qux(); //~ NOTE recursive call site - } - - // Inherent method call via path. - fn as_ref(&self) -> &Self { //~ ERROR function cannot return without recurring - Baz::as_ref(self) //~ NOTE recursive call site - } -} - -// Trait method calls to impls via paths. -impl Default for Baz { - fn default() -> Baz { //~ ERROR function cannot return without recurring - let x = Default::default(); //~ NOTE recursive call site - x - } -} - -// Overloaded operators. -impl std::ops::Deref for Baz { - type Target = (); - fn deref(&self) -> &() { //~ ERROR function cannot return without recurring - &**self //~ NOTE recursive call site - } -} - -impl std::ops::Index<usize> for Baz { - type Output = Baz; - fn index(&self, x: usize) -> &Baz { //~ ERROR function cannot return without recurring - &self[x] //~ NOTE recursive call site - } -} - -// Overloaded autoderef. -struct Quux; -impl std::ops::Deref for Quux { - type Target = Baz; - fn deref(&self) -> &Baz { //~ ERROR function cannot return without recurring - self.as_ref() //~ NOTE recursive call site - } -} - -fn all_fine() { - let _f = all_fine; -} - -// issue 26333 -trait Bar { - fn method<T: Bar>(&self, x: &T) { - x.method(x) - } -} - -fn main() {} |
