diff options
| author | bors <bors@rust-lang.org> | 2013-07-16 21:31:48 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-07-16 21:31:48 -0700 |
| commit | 4bd716ac8eb60dbaced9e3d2bafee89b713a7849 (patch) | |
| tree | 0e4b5bfa54cd0ada0c34029e3ab59eb7c50f5fc3 /src/libstd | |
| parent | 8a1002fbd93989bbf5c8989ed8002827920b375b (diff) | |
| parent | 712ac836c63c3ae98daf9fb98b7b96ed73347848 (diff) | |
| download | rust-4bd716ac8eb60dbaced9e3d2bafee89b713a7849.tar.gz rust-4bd716ac8eb60dbaced9e3d2bafee89b713a7849.zip | |
auto merge of #7831 : ozten/rust/issues-7764-swap_unwarp-take-unwrap, r=pcwalton
Fixes Issue #7764
Running `make check` I do get a failure:
test rt::io::extensions::test::push_bytes ... ok
rustest rt::comm::test::oneshot_single_thread_send_port_close ... t: task failed at 'Unhandled condition:
read_error: {kind: OtherIoError, desc: "Placeholder error. You shouldn\'t be seeing this", detail: None}',
/Users/shout/Projects/rust/src/libstd/condition.rs:50
/bin/sh: line 1: 35056 Abort trap: 6 x86_64-apple-darwin/stage2/test/stdtest-x86_64-apple-darwin --logfile
tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.log
make: *** [tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.ok] Error 134
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/option.rs | 14 | ||||
| -rw-r--r-- | src/libstd/rt/sched.rs | 10 | ||||
| -rw-r--r-- | src/libstd/rt/task.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rt/tube.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rt/uv/async.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rt/uv/idle.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rt/uv/net.rs | 10 | ||||
| -rw-r--r-- | src/libstd/rt/uv/timer.rs | 2 | ||||
| -rw-r--r-- | src/libstd/task/spawn.rs | 6 |
9 files changed, 25 insertions, 25 deletions
diff --git a/src/libstd/option.rs b/src/libstd/option.rs index 222952a6dc1..b0811674a7b 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -203,14 +203,14 @@ impl<T> Option<T> { /// Apply a function to the contained value or do nothing pub fn mutate(&mut self, f: &fn(T) -> T) { if self.is_some() { - *self = Some(f(self.swap_unwrap())); + *self = Some(f(self.take_unwrap())); } } /// Apply a function to the contained value or set it to a default pub fn mutate_default(&mut self, def: T, f: &fn(T) -> T) { if self.is_some() { - *self = Some(f(self.swap_unwrap())); + *self = Some(f(self.take_unwrap())); } else { *self = Some(def); } @@ -293,8 +293,8 @@ impl<T> Option<T> { * Fails if the value equals `None`. */ #[inline] - pub fn swap_unwrap(&mut self) -> T { - if self.is_none() { fail!("option::swap_unwrap none") } + pub fn take_unwrap(&mut self) -> T { + if self.is_none() { fail!("option::take_unwrap none") } util::replace(self, None).unwrap() } @@ -460,7 +460,7 @@ fn test_option_dance() { let mut y = Some(5); let mut y2 = 0; for x.iter().advance |_x| { - y2 = y.swap_unwrap(); + y2 = y.take_unwrap(); } assert_eq!(y2, 5); assert!(y.is_none()); @@ -468,8 +468,8 @@ fn test_option_dance() { #[test] #[should_fail] #[ignore(cfg(windows))] fn test_option_too_much_dance() { let mut y = Some(util::NonCopyable); - let _y2 = y.swap_unwrap(); - let _y3 = y.swap_unwrap(); + let _y2 = y.take_unwrap(); + let _y3 = y.take_unwrap(); } #[test] diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index 6e9aef77730..4e4145ddc16 100644 --- a/src/libstd/rt/sched.rs +++ b/src/libstd/rt/sched.rs @@ -328,7 +328,7 @@ impl Scheduler { /// Given an input Coroutine sends it back to its home scheduler. fn send_task_home(task: ~Task) { let mut task = task; - let mut home = task.home.swap_unwrap(); + let mut home = task.home.take_unwrap(); match home { Sched(ref mut home_handle) => { home_handle.send(PinnedTask(task)); @@ -418,7 +418,7 @@ impl Scheduler { do self.deschedule_running_task_and_then |sched, dead_task| { let mut dead_task = dead_task; - let coroutine = dead_task.coroutine.swap_unwrap(); + let coroutine = dead_task.coroutine.take_unwrap(); coroutine.recycle(&mut sched.stack_pool); } @@ -506,7 +506,7 @@ impl Scheduler { this.metrics.context_switches_task_to_sched += 1; unsafe { - let blocked_task = this.current_task.swap_unwrap(); + let blocked_task = this.current_task.take_unwrap(); let f_fake_region = transmute::<&fn(&mut Scheduler, ~Task), &fn(&mut Scheduler, ~Task)>(f); let f_opaque = ClosureConverter::from_fn(f_fake_region); @@ -538,7 +538,7 @@ impl Scheduler { rtdebug!("switching tasks"); this.metrics.context_switches_task_to_task += 1; - let old_running_task = this.current_task.swap_unwrap(); + let old_running_task = this.current_task.take_unwrap(); let f_fake_region = unsafe { transmute::<&fn(&mut Scheduler, ~Task), &fn(&mut Scheduler, ~Task)>(f) @@ -576,7 +576,7 @@ impl Scheduler { assert!(self.cleanup_job.is_some()); - let cleanup_job = self.cleanup_job.swap_unwrap(); + let cleanup_job = self.cleanup_job.take_unwrap(); match cleanup_job { DoNothing => { } GiveTask(task, f) => (f.to_fn())(self, task) diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 17d0d59660f..449438b9205 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -127,7 +127,7 @@ impl Task { // Wait for children. Possibly report the exit status. let local_success = !self.unwinder.unwinding; - let join_latch = self.join_latch.swap_unwrap(); + let join_latch = self.join_latch.take_unwrap(); match self.on_exit { Some(ref on_exit) => { let success = join_latch.wait(local_success); diff --git a/src/libstd/rt/tube.rs b/src/libstd/rt/tube.rs index 013eb438c36..f61eee8859b 100644 --- a/src/libstd/rt/tube.rs +++ b/src/libstd/rt/tube.rs @@ -53,7 +53,7 @@ impl<T> Tube<T> { if (*state).blocked_task.is_some() { // There's a waiting task. Wake it up rtdebug!("waking blocked tube"); - let task = (*state).blocked_task.swap_unwrap(); + let task = (*state).blocked_task.take_unwrap(); let sched = Local::take::<Scheduler>(); sched.resume_task_immediately(task); } diff --git a/src/libstd/rt/uv/async.rs b/src/libstd/rt/uv/async.rs index f3d1024024f..81428509e33 100644 --- a/src/libstd/rt/uv/async.rs +++ b/src/libstd/rt/uv/async.rs @@ -62,7 +62,7 @@ impl AsyncWatcher { let mut watcher: AsyncWatcher = NativeHandle::from_native_handle(handle); { let data = watcher.get_watcher_data(); - data.close_cb.swap_unwrap()(); + data.close_cb.take_unwrap()(); } watcher.drop_watcher_data(); unsafe { uvll::free_handle(handle as *c_void); } diff --git a/src/libstd/rt/uv/idle.rs b/src/libstd/rt/uv/idle.rs index a3630c9b9bf..28b101f686d 100644 --- a/src/libstd/rt/uv/idle.rs +++ b/src/libstd/rt/uv/idle.rs @@ -73,7 +73,7 @@ impl IdleWatcher { let mut idle_watcher: IdleWatcher = NativeHandle::from_native_handle(handle); { let data = idle_watcher.get_watcher_data(); - data.close_cb.swap_unwrap()(); + data.close_cb.take_unwrap()(); } idle_watcher.drop_watcher_data(); uvll::idle_delete(handle); diff --git a/src/libstd/rt/uv/net.rs b/src/libstd/rt/uv/net.rs index 6d096f9885a..09c748ec047 100644 --- a/src/libstd/rt/uv/net.rs +++ b/src/libstd/rt/uv/net.rs @@ -209,7 +209,7 @@ impl StreamWatcher { let write_request: WriteRequest = NativeHandle::from_native_handle(req); let mut stream_watcher = write_request.stream(); write_request.delete(); - let cb = stream_watcher.get_watcher_data().write_cb.swap_unwrap(); + let cb = stream_watcher.get_watcher_data().write_cb.take_unwrap(); let status = status_to_maybe_uv_error(stream_watcher.native_handle(), status); cb(stream_watcher, status); } @@ -233,7 +233,7 @@ impl StreamWatcher { extern fn close_cb(handle: *uvll::uv_stream_t) { let mut stream_watcher: StreamWatcher = NativeHandle::from_native_handle(handle); - stream_watcher.get_watcher_data().close_cb.swap_unwrap()(); + stream_watcher.get_watcher_data().close_cb.take_unwrap()(); stream_watcher.drop_watcher_data(); unsafe { free_handle(handle as *c_void) } } @@ -301,7 +301,7 @@ impl TcpWatcher { let connect_request: ConnectRequest = NativeHandle::from_native_handle(req); let mut stream_watcher = connect_request.stream(); connect_request.delete(); - let cb = stream_watcher.get_watcher_data().connect_cb.swap_unwrap(); + let cb = stream_watcher.get_watcher_data().connect_cb.take_unwrap(); let status = status_to_maybe_uv_error(stream_watcher.native_handle(), status); cb(stream_watcher, status); } @@ -438,7 +438,7 @@ impl UdpWatcher { let send_request: UdpSendRequest = NativeHandle::from_native_handle(req); let mut udp_watcher = send_request.handle(); send_request.delete(); - let cb = udp_watcher.get_watcher_data().udp_send_cb.swap_unwrap(); + let cb = udp_watcher.get_watcher_data().udp_send_cb.take_unwrap(); let status = status_to_maybe_uv_error(udp_watcher.native_handle(), status); cb(udp_watcher, status); } @@ -456,7 +456,7 @@ impl UdpWatcher { extern fn close_cb(handle: *uvll::uv_udp_t) { let mut udp_watcher: UdpWatcher = NativeHandle::from_native_handle(handle); - udp_watcher.get_watcher_data().close_cb.swap_unwrap()(); + udp_watcher.get_watcher_data().close_cb.take_unwrap()(); udp_watcher.drop_watcher_data(); unsafe { free_handle(handle as *c_void) } } diff --git a/src/libstd/rt/uv/timer.rs b/src/libstd/rt/uv/timer.rs index 14465eb7dfd..bc5399327a0 100644 --- a/src/libstd/rt/uv/timer.rs +++ b/src/libstd/rt/uv/timer.rs @@ -70,7 +70,7 @@ impl TimerWatcher { let mut watcher: TimerWatcher = NativeHandle::from_native_handle(handle); { let data = watcher.get_watcher_data(); - data.close_cb.swap_unwrap()(); + data.close_cb.take_unwrap()(); } watcher.drop_watcher_data(); unsafe { diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 206d19e175f..bf09a533ebe 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -302,7 +302,7 @@ fn each_ancestor(list: &mut AncestorList, fn with_parent_tg<U>(parent_group: &mut Option<TaskGroupArc>, blk: &fn(TaskGroupInner) -> U) -> U { // If this trips, more likely the problem is 'blk' failed inside. - let tmp_arc = parent_group.swap_unwrap(); + let tmp_arc = parent_group.take_unwrap(); let result = do access_group(&tmp_arc) |tg_opt| { blk(tg_opt) }; *parent_group = Some(tmp_arc); result @@ -609,7 +609,7 @@ fn spawn_raw_newsched(mut opts: TaskOpts, f: ~fn()) { }; if opts.notify_chan.is_some() { - let notify_chan = opts.notify_chan.swap_unwrap(); + let notify_chan = opts.notify_chan.take_unwrap(); let notify_chan = Cell::new(notify_chan); let on_exit: ~fn(bool) = |success| { notify_chan.take().send( @@ -647,7 +647,7 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { let notify_chan = if opts.notify_chan.is_none() { None } else { - Some(opts.notify_chan.swap_unwrap()) + Some(opts.notify_chan.take_unwrap()) }; let child_wrapper = make_child_wrapper(new_task, child_tg, |
