Turn old drop
blocks into Drop
traits
This commit is contained in:
parent
33e7a1f087
commit
43d43adf6b
22 changed files with 117 additions and 29 deletions
|
@ -474,7 +474,10 @@ impl<R:Reader,C> Reader for Wrapper<R, C> {
|
||||||
|
|
||||||
pub struct FILERes {
|
pub struct FILERes {
|
||||||
f: *libc::FILE,
|
f: *libc::FILE,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for FILERes {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
libc::fclose(self.f);
|
libc::fclose(self.f);
|
||||||
}
|
}
|
||||||
|
@ -683,7 +686,10 @@ impl Writer for fd_t {
|
||||||
|
|
||||||
pub struct FdRes {
|
pub struct FdRes {
|
||||||
fd: fd_t,
|
fd: fd_t,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for FdRes {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
libc::close(self.fd);
|
libc::close(self.fd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,7 +450,10 @@ fn test_unwrap_str() {
|
||||||
fn test_unwrap_resource() {
|
fn test_unwrap_resource() {
|
||||||
struct R {
|
struct R {
|
||||||
i: @mut int,
|
i: @mut int,
|
||||||
drop { *(self.i) += 1; }
|
}
|
||||||
|
|
||||||
|
impl ::ops::Drop for R {
|
||||||
|
fn finalize(&self) { *(self.i) += 1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn R(i: @mut int) -> R {
|
fn R(i: @mut int) -> R {
|
||||||
|
|
|
@ -346,7 +346,10 @@ pub unsafe fn get_buffer<T>(p: *PacketHeader) -> ~Buffer<T> {
|
||||||
struct BufferResource<T> {
|
struct BufferResource<T> {
|
||||||
buffer: ~Buffer<T>,
|
buffer: ~Buffer<T>,
|
||||||
|
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl<T> ::ops::Drop for BufferResource<T> {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let b = move_it!(self.buffer);
|
let b = move_it!(self.buffer);
|
||||||
//let p = ptr::addr_of(*b);
|
//let p = ptr::addr_of(*b);
|
||||||
|
|
|
@ -126,7 +126,10 @@ struct ArcData<T> {
|
||||||
|
|
||||||
struct ArcDestruct<T> {
|
struct ArcDestruct<T> {
|
||||||
mut data: *libc::c_void,
|
mut data: *libc::c_void,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl<T> Drop for ArcDestruct<T>{
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
if self.data.is_null() {
|
if self.data.is_null() {
|
||||||
return; // Happens when destructing an unwrapper's handle.
|
return; // Happens when destructing an unwrapper's handle.
|
||||||
|
@ -178,7 +181,10 @@ pub unsafe fn unwrap_shared_mutable_state<T:Owned>(rc: SharedMutableState<T>)
|
||||||
struct DeathThroes<T> {
|
struct DeathThroes<T> {
|
||||||
mut ptr: Option<~ArcData<T>>,
|
mut ptr: Option<~ArcData<T>>,
|
||||||
mut response: Option<comm::ChanOne<bool>>,
|
mut response: Option<comm::ChanOne<bool>>,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl<T> Drop for DeathThroes<T>{
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let response = option::swap_unwrap(&mut self.response);
|
let response = option::swap_unwrap(&mut self.response);
|
||||||
// In case we get killed early, we need to tell the person who
|
// In case we get killed early, we need to tell the person who
|
||||||
|
@ -311,7 +317,10 @@ type rust_little_lock = *libc::c_void;
|
||||||
|
|
||||||
struct LittleLock {
|
struct LittleLock {
|
||||||
l: rust_little_lock,
|
l: rust_little_lock,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for LittleLock {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
rustrt::rust_destroy_little_lock(self.l);
|
rustrt::rust_destroy_little_lock(self.l);
|
||||||
}
|
}
|
||||||
|
|
|
@ -365,7 +365,10 @@ impl Rng {
|
||||||
|
|
||||||
struct RandRes {
|
struct RandRes {
|
||||||
rng: *rust_rng,
|
rng: *rust_rng,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for RandRes {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
rustrt::rand_free(self.rng);
|
rustrt::rand_free(self.rng);
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,10 @@ pub fn start_program(prog: &str, args: &[~str]) -> Program {
|
||||||
}
|
}
|
||||||
struct ProgRes {
|
struct ProgRes {
|
||||||
r: ProgRepr,
|
r: ProgRepr,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for ProgRes {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
// FIXME #4943: This is bad.
|
// FIXME #4943: This is bad.
|
||||||
destroy_repr(cast::transmute(&self.r));
|
destroy_repr(cast::transmute(&self.r));
|
||||||
|
|
|
@ -308,8 +308,11 @@ struct TCB {
|
||||||
mut ancestors: AncestorList,
|
mut ancestors: AncestorList,
|
||||||
is_main: bool,
|
is_main: bool,
|
||||||
notifier: Option<AutoNotify>,
|
notifier: Option<AutoNotify>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for TCB {
|
||||||
// Runs on task exit.
|
// Runs on task exit.
|
||||||
drop {
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
// If we are failing, the whole taskgroup needs to die.
|
// If we are failing, the whole taskgroup needs to die.
|
||||||
if rt::rust_task_is_unwinding(self.me) {
|
if rt::rust_task_is_unwinding(self.me) {
|
||||||
|
@ -353,7 +356,10 @@ fn TCB(me: *rust_task, tasks: TaskGroupArc, ancestors: AncestorList,
|
||||||
struct AutoNotify {
|
struct AutoNotify {
|
||||||
notify_chan: Chan<TaskResult>,
|
notify_chan: Chan<TaskResult>,
|
||||||
mut failed: bool,
|
mut failed: bool,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for AutoNotify {
|
||||||
|
fn finalize(&self) {
|
||||||
let result = if self.failed { Failure } else { Success };
|
let result = if self.failed { Failure } else { Success };
|
||||||
self.notify_chan.send(result);
|
self.notify_chan.send(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,10 @@ pub fn replace<T>(dest: &mut T, src: T) -> T {
|
||||||
/// A non-copyable dummy type.
|
/// A non-copyable dummy type.
|
||||||
pub struct NonCopyable {
|
pub struct NonCopyable {
|
||||||
i: (),
|
i: (),
|
||||||
drop { }
|
}
|
||||||
|
|
||||||
|
impl Drop for NonCopyable {
|
||||||
|
fn finalize(&self) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn NonCopyable() -> NonCopyable { NonCopyable { i: () } }
|
pub fn NonCopyable() -> NonCopyable { NonCopyable { i: () } }
|
||||||
|
|
|
@ -1458,7 +1458,10 @@ pub fn struct_tys(struct_ty: TypeRef) -> ~[TypeRef] {
|
||||||
|
|
||||||
pub struct target_data_res {
|
pub struct target_data_res {
|
||||||
TD: TargetDataRef,
|
TD: TargetDataRef,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for target_data_res {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMDisposeTargetData(self.TD);
|
llvm::LLVMDisposeTargetData(self.TD);
|
||||||
}
|
}
|
||||||
|
@ -1492,7 +1495,10 @@ pub fn mk_target_data(string_rep: ~str) -> TargetData {
|
||||||
|
|
||||||
pub struct pass_manager_res {
|
pub struct pass_manager_res {
|
||||||
PM: PassManagerRef,
|
PM: PassManagerRef,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for pass_manager_res {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMDisposePassManager(self.PM);
|
llvm::LLVMDisposePassManager(self.PM);
|
||||||
}
|
}
|
||||||
|
@ -1525,7 +1531,10 @@ pub fn mk_pass_manager() -> PassManager {
|
||||||
|
|
||||||
pub struct object_file_res {
|
pub struct object_file_res {
|
||||||
ObjectFile: ObjectFileRef,
|
ObjectFile: ObjectFileRef,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for object_file_res {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMDisposeObjectFile(self.ObjectFile);
|
llvm::LLVMDisposeObjectFile(self.ObjectFile);
|
||||||
}
|
}
|
||||||
|
@ -1559,7 +1568,10 @@ pub fn mk_object_file(llmb: MemoryBufferRef) -> Option<ObjectFile> {
|
||||||
|
|
||||||
pub struct section_iter_res {
|
pub struct section_iter_res {
|
||||||
SI: SectionIteratorRef,
|
SI: SectionIteratorRef,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for section_iter_res {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMDisposeSectionIterator(self.SI);
|
llvm::LLVMDisposeSectionIterator(self.SI);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,10 @@ use syntax::{ast, ast_util, codemap, ast_map};
|
||||||
|
|
||||||
pub struct icx_popper {
|
pub struct icx_popper {
|
||||||
ccx: @CrateContext,
|
ccx: @CrateContext,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for icx_popper {
|
||||||
|
fn finalize(&self) {
|
||||||
if self.ccx.sess.count_llvm_insns() {
|
if self.ccx.sess.count_llvm_insns() {
|
||||||
self.ccx.stats.llvm_insn_ctxt.pop();
|
self.ccx.stats.llvm_insn_ctxt.pop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,10 @@ pub struct Stats {
|
||||||
|
|
||||||
pub struct BuilderRef_res {
|
pub struct BuilderRef_res {
|
||||||
B: BuilderRef,
|
B: BuilderRef,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for BuilderRef_res {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMDisposeBuilder(self.B);
|
llvm::LLVMDisposeBuilder(self.B);
|
||||||
}
|
}
|
||||||
|
|
|
@ -336,7 +336,10 @@ pub fn monitor(+f: fn~(diagnostic::Emitter)) {
|
||||||
|
|
||||||
struct finally {
|
struct finally {
|
||||||
ch: SharedChan<monitor_msg>,
|
ch: SharedChan<monitor_msg>,
|
||||||
drop { self.ch.send(done); }
|
}
|
||||||
|
|
||||||
|
impl Drop for finally {
|
||||||
|
fn finalize(&self) { self.ch.send(done); }
|
||||||
}
|
}
|
||||||
|
|
||||||
let _finally = finally { ch: ch };
|
let _finally = finally { ch: ch };
|
||||||
|
|
|
@ -32,7 +32,10 @@ pub fn indent<R>(op: fn() -> R) -> R {
|
||||||
|
|
||||||
pub struct _indenter {
|
pub struct _indenter {
|
||||||
_i: (),
|
_i: (),
|
||||||
drop { debug!("<<"); }
|
}
|
||||||
|
|
||||||
|
impl Drop for _indenter {
|
||||||
|
fn finalize(&self) { debug!("<<"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _indenter(_i: ()) -> _indenter {
|
pub fn _indenter(_i: ()) -> _indenter {
|
||||||
|
|
|
@ -125,7 +125,10 @@ mod blade_runner {
|
||||||
*/
|
*/
|
||||||
struct Bored {
|
struct Bored {
|
||||||
bored: bool,
|
bored: bool,
|
||||||
drop { log(error, self.bored); }
|
}
|
||||||
|
|
||||||
|
impl Drop for Bored {
|
||||||
|
fn finalize(&self) { log(error, self.bored); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -28,7 +28,10 @@ pub struct TaskPool<T> {
|
||||||
channels: ~[Chan<Msg<T>>],
|
channels: ~[Chan<Msg<T>>],
|
||||||
mut next_index: uint,
|
mut next_index: uint,
|
||||||
|
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl<T> Drop for TaskPool<T> {
|
||||||
|
fn finalize(&self) {
|
||||||
for self.channels.each |channel| {
|
for self.channels.each |channel| {
|
||||||
channel.send(Quit);
|
channel.send(Quit);
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,7 +243,11 @@ pub struct Parser {
|
||||||
/// Used to determine the path to externally loaded source files
|
/// Used to determine the path to externally loaded source files
|
||||||
mod_path_stack: @mut ~[~str],
|
mod_path_stack: @mut ~[~str],
|
||||||
|
|
||||||
drop {} /* do not copy the parser; its state is tied to outside state */
|
}
|
||||||
|
|
||||||
|
impl Drop for Parser {
|
||||||
|
/* do not copy the parser; its state is tied to outside state */
|
||||||
|
fn finalize(&self) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl Parser {
|
pub impl Parser {
|
||||||
|
|
|
@ -12,7 +12,10 @@
|
||||||
|
|
||||||
pub struct S {
|
pub struct S {
|
||||||
x: int,
|
x: int,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for S {
|
||||||
|
fn finalize(&self) {
|
||||||
io::println("goodbye");
|
io::println("goodbye");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
struct S {
|
struct S {
|
||||||
x: int,
|
x: int,
|
||||||
drop {}
|
}
|
||||||
|
|
||||||
|
impl Drop for S {
|
||||||
|
fn finalize(&self) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl S {
|
impl S {
|
||||||
|
|
|
@ -21,7 +21,10 @@ fn recurse() {
|
||||||
|
|
||||||
struct r {
|
struct r {
|
||||||
recursed: *mut bool,
|
recursed: *mut bool,
|
||||||
drop {
|
}
|
||||||
|
|
||||||
|
impl Drop for r {
|
||||||
|
fn finalize(&self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
if !*(self.recursed) {
|
if !*(self.recursed) {
|
||||||
*(self.recursed) = true;
|
*(self.recursed) = true;
|
||||||
|
|
|
@ -12,7 +12,10 @@
|
||||||
|
|
||||||
struct r {
|
struct r {
|
||||||
i: int,
|
i: int,
|
||||||
drop { fail!(~"squirrel") }
|
}
|
||||||
|
|
||||||
|
impl Drop for r {
|
||||||
|
fn finalize(&self) { fail!(~"squirrel") }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn r(i: int) -> r { r { i: i } }
|
fn r(i: int) -> r { r { i: i } }
|
||||||
|
|
|
@ -13,7 +13,10 @@
|
||||||
|
|
||||||
struct r {
|
struct r {
|
||||||
i: int,
|
i: int,
|
||||||
drop { fail!(~"wombat") }
|
}
|
||||||
|
|
||||||
|
impl Drop for r {
|
||||||
|
fn finalize(&self) { fail!(~"wombat") }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn r(i: int) -> r { r { i: i } }
|
fn r(i: int) -> r { r { i: i } }
|
||||||
|
|
|
@ -54,7 +54,10 @@ struct AsciiArt
|
||||||
|
|
||||||
// This struct can be quite large so we'll disable copying: developers need
|
// This struct can be quite large so we'll disable copying: developers need
|
||||||
// to either pass these structs around via borrowed pointers or move them.
|
// to either pass these structs around via borrowed pointers or move them.
|
||||||
drop {}
|
}
|
||||||
|
|
||||||
|
impl Drop for AsciiArt {
|
||||||
|
fn finalize(&self) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// It's common to define a constructor sort of function to create struct instances.
|
// It's common to define a constructor sort of function to create struct instances.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue