From d399098fd82e0bf3ed61bbbbcdbb0b6adfa4c808 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Mon, 12 Oct 2015 15:50:12 +1300 Subject: Remove the push_unsafe! and pop_unsafe! macros. This is a [breaking change]. --- .../compile-fail/feature-gate-pushpop-unsafe.rs | 14 ---- src/test/compile-fail/pushpop-unsafe-rejects.rs | 74 ---------------------- src/test/run-pass/pushpop-unsafe-okay.rs | 56 ---------------- 3 files changed, 144 deletions(-) delete mode 100644 src/test/compile-fail/feature-gate-pushpop-unsafe.rs delete mode 100644 src/test/compile-fail/pushpop-unsafe-rejects.rs delete mode 100644 src/test/run-pass/pushpop-unsafe-okay.rs (limited to 'src/test') diff --git a/src/test/compile-fail/feature-gate-pushpop-unsafe.rs b/src/test/compile-fail/feature-gate-pushpop-unsafe.rs deleted file mode 100644 index e317b4c7d4d..00000000000 --- a/src/test/compile-fail/feature-gate-pushpop-unsafe.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 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. - -fn main() { - let c = push_unsafe!('c'); //~ ERROR push/pop_unsafe macros are experimental - let c = pop_unsafe!('c'); //~ ERROR push/pop_unsafe macros are experimental -} diff --git a/src/test/compile-fail/pushpop-unsafe-rejects.rs b/src/test/compile-fail/pushpop-unsafe-rejects.rs deleted file mode 100644 index 72c065ae714..00000000000 --- a/src/test/compile-fail/pushpop-unsafe-rejects.rs +++ /dev/null @@ -1,74 +0,0 @@ -// 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. - -// Basic sanity check for `push_unsafe!(EXPR)` and -// `pop_unsafe!(EXPR)`: we can call unsafe code when there are a -// positive number of pushes in the stack, or if we are within a -// normal `unsafe` block, but otherwise cannot. - -#![feature(pushpop_unsafe)] - -static mut X: i32 = 0; - -unsafe fn f() { X += 1; return; } -fn g() { unsafe { X += 1_000; } return; } - -fn main() { - push_unsafe!( { - f(); pop_unsafe!({ - f() //~ ERROR: call to unsafe function - }) - } ); - - push_unsafe!({ - f(); - pop_unsafe!({ - g(); - f(); //~ ERROR: call to unsafe function - }) - } ); - - push_unsafe!({ - g(); pop_unsafe!({ - unsafe { - f(); - } - f(); //~ ERROR: call to unsafe function - }) - }); - - - // Note: For implementation simplicity the compiler just - // ICE's if you underflow the push_unsafe stack. - // - // Thus all of the following cases cause an ICE. - // - // (The "ERROR" notes are from an earlier version - // that used saturated arithmetic rather than checked - // arithmetic.) - - // pop_unsafe!{ g() }; - // - // push_unsafe!({ - // pop_unsafe!(pop_unsafe!{ g() }) - // }); - // - // push_unsafe!({ - // g(); - // pop_unsafe!(pop_unsafe!({ - // f() // ERROR: call to unsafe function - // })) - // }); - // - // pop_unsafe!({ - // f(); // ERROR: call to unsafe function - // }) - -} diff --git a/src/test/run-pass/pushpop-unsafe-okay.rs b/src/test/run-pass/pushpop-unsafe-okay.rs deleted file mode 100644 index fc402d41368..00000000000 --- a/src/test/run-pass/pushpop-unsafe-okay.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 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. - -// Basic sanity check for `push_unsafe!(EXPR)` and -// `pop_unsafe!(EXPR)`: we can call unsafe code when there are a -// positive number of pushes in the stack, or if we are within a -// normal `unsafe` block, but otherwise cannot. - -// ignore-pretty because the `push_unsafe!` and `pop_unsafe!` macros -// are not integrated with the pretty-printer. - -#![feature(pushpop_unsafe)] - -static mut X: i32 = 0; - -unsafe fn f() { X += 1; return; } -fn g() { unsafe { X += 1_000; } return; } - -fn check_reset_x(x: i32) -> bool { - #![allow(unused_parens)] // dont you judge my style choices! - unsafe { - let ret = (x == X); - X = 0; - ret - } -} - -fn main() { - // double-check test infrastructure - assert!(check_reset_x(0)); - unsafe { f(); } - assert!(check_reset_x(1)); - assert!(check_reset_x(0)); - { g(); } - assert!(check_reset_x(1000)); - assert!(check_reset_x(0)); - unsafe { f(); g(); g(); } - assert!(check_reset_x(2001)); - - push_unsafe!( { f(); pop_unsafe!( g() ) } ); - assert!(check_reset_x(1_001)); - push_unsafe!( { g(); pop_unsafe!( unsafe { f(); f(); } ) } ); - assert!(check_reset_x(1_002)); - - unsafe { push_unsafe!( { f(); pop_unsafe!( { f(); f(); } ) } ); } - assert!(check_reset_x(3)); - push_unsafe!( { f(); push_unsafe!( { pop_unsafe!( { f(); f(); f(); } ) } ); } ); - assert!(check_reset_x(4)); -} -- cgit 1.4.1-3-g733a5