diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2013-01-24 17:24:45 -0800 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2013-01-24 17:24:45 -0800 |
| commit | 9898485d4f441196c4f9b0b37f5fcc54921e8032 (patch) | |
| tree | de85d7acce577d0d9814d011ce8177336872ac96 /src/libstd | |
| parent | f19e16881e474e7f854ad04872e84755a8ad182b (diff) | |
| parent | 11fd2beef95f2a1e28fbd7b7b7b8647f88f15d40 (diff) | |
Merge pull request #4613 from erickt/incoming
convert most of libcore and libstd to structs, work around tzset race
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/arena.rs | 20 | ||||
| -rw-r--r-- | src/libstd/deque.rs | 39 | ||||
| -rw-r--r-- | src/libstd/map.rs | 22 | ||||
| -rw-r--r-- | src/libstd/net_ip.rs | 50 | ||||
| -rw-r--r-- | src/libstd/net_tcp.rs | 68 | ||||
| -rw-r--r-- | src/libstd/rope.rs | 138 | ||||
| -rw-r--r-- | src/libstd/sha1.rs | 100 | ||||
| -rw-r--r-- | src/libstd/smallintmap.rs | 6 | ||||
| -rw-r--r-- | src/libstd/test.rs | 57 | ||||
| -rw-r--r-- | src/libstd/time.rs | 28 | ||||
| -rw-r--r-- | src/libstd/uv_iotask.rs | 14 | ||||
| -rw-r--r-- | src/libstd/uv_ll.rs | 431 |
12 files changed, 555 insertions, 418 deletions
diff --git a/src/libstd/arena.rs b/src/libstd/arena.rs index 7ac11ecc5cc..eef84ae2422 100644 --- a/src/libstd/arena.rs +++ b/src/libstd/arena.rs @@ -68,7 +68,11 @@ const tydesc_drop_glue_index: size_t = 3 as size_t; // The way arena uses arrays is really deeply awful. The arrays are // allocated, and have capacities reserved, but the fill for the array // will always stay at 0. -type Chunk = {data: @[u8], mut fill: uint, is_pod: bool}; +struct Chunk { + data: @[u8], + mut fill: uint, + is_pod: bool, +} pub struct Arena { // The head is seperated out from the list as a unbenchmarked @@ -93,13 +97,19 @@ impl Arena : Drop { fn chunk(size: uint, is_pod: bool) -> Chunk { let mut v: @[const u8] = @[]; unsafe { at_vec::raw::reserve(&mut v, size); } - { data: unsafe { cast::transmute(v) }, mut fill: 0u, is_pod: is_pod } + Chunk { + data: unsafe { cast::transmute(v) }, + fill: 0u, + is_pod: is_pod, + } } pub fn arena_with_size(initial_size: uint) -> Arena { - return Arena {mut head: chunk(initial_size, false), - mut pod_head: chunk(initial_size, true), - mut chunks: @Nil}; + Arena { + head: chunk(initial_size, false), + pod_head: chunk(initial_size, true), + chunks: @Nil, + } } pub fn Arena() -> Arena { diff --git a/src/libstd/deque.rs b/src/libstd/deque.rs index 71d8743a361..b4217dfb39d 100644 --- a/src/libstd/deque.rs +++ b/src/libstd/deque.rs @@ -61,10 +61,12 @@ pub fn create<T: Copy>() -> Deque<T> { match (*elts).get_elt(i) { Some(move t) => t, _ => fail } } - type Repr<T> = {mut nelts: uint, - mut lo: uint, - mut hi: uint, - elts: DVec<Cell<T>>}; + struct Repr<T> { + mut nelts: uint, + mut lo: uint, + mut hi: uint, + elts: DVec<Cell<T>>, + } impl <T: Copy> Repr<T>: Deque<T> { fn size() -> uint { return self.nelts; } @@ -119,15 +121,14 @@ pub fn create<T: Copy>() -> Deque<T> { } } - let repr: Repr<T> = { - mut nelts: 0u, - mut lo: 0u, - mut hi: 0u, - elts: - dvec::from_vec( - vec::from_elem(initial_capacity, None)) + let repr: Repr<T> = Repr { + nelts: 0u, + lo: 0u, + hi: 0u, + elts: dvec::from_vec(vec::from_elem(initial_capacity, None)), }; - (move repr) as Deque::<T> + + repr as Deque::<T> } #[cfg(test)] @@ -254,7 +255,11 @@ mod tests { Onepar(int), Twopar(int, int), Threepar(int, int, int), } - type RecCy = {x: int, y: int, t: Taggy}; + struct RecCy { + x: int, + y: int, + t: Taggy, + } impl Taggy : Eq { pure fn eq(&self, other: &Taggy) -> bool { @@ -335,10 +340,10 @@ mod tests { #[test] fn test_param_reccy() { - let reccy1: RecCy = {x: 1, y: 2, t: One(1)}; - let reccy2: RecCy = {x: 345, y: 2, t: Two(1, 2)}; - let reccy3: RecCy = {x: 1, y: 777, t: Three(1, 2, 3)}; - let reccy4: RecCy = {x: 19, y: 252, t: Two(17, 42)}; + let reccy1 = RecCy { x: 1, y: 2, t: One(1) }; + let reccy2 = RecCy { x: 345, y: 2, t: Two(1, 2) }; + let reccy3 = RecCy { x: 1, y: 777, t: Three(1, 2, 3) }; + let reccy4 = RecCy { x: 19, y: 252, t: Two(17, 42) }; test_parameterized::<RecCy>(reccy1, reccy2, reccy3, reccy4); } } diff --git a/src/libstd/map.rs b/src/libstd/map.rs index 4c05dd154ca..3c890ef0654 100644 --- a/src/libstd/map.rs +++ b/src/libstd/map.rs @@ -107,7 +107,11 @@ pub trait Map<K:Eq IterBytes Hash Copy, V: Copy> { } pub mod util { - pub type Rational = {num: int, den: int}; // : int::positive(*.den); + pub struct Rational { + // : int::positive(*.den); + num: int, + den: int, + } pub pure fn rational_leq(x: Rational, y: Rational) -> bool { // NB: Uses the fact that rationals have positive denominators WLOG: @@ -265,9 +269,11 @@ pub mod chained { // consider rehashing if more 3/4 full let nchains = vec::len(self.chains); - let load = {num: (self.count + 1u) as int, - den: nchains as int}; - if !util::rational_leq(load, {num:3, den:4}) { + let load = util::Rational { + num: (self.count + 1u) as int, + den: nchains as int, + }; + if !util::rational_leq(load, util::Rational {num:3, den:4}) { self.rehash(); } @@ -324,9 +330,11 @@ pub mod chained { // consider rehashing if more 3/4 full let nchains = vec::len(self.chains); - let load = {num: (self.count + 1u) as int, - den: nchains as int}; - if !util::rational_leq(load, {num:3, den:4}) { + let load = util::Rational { + num: (self.count + 1u) as int, + den: nchains as int, + }; + if !util::rational_leq(load, util::Rational {num:3, den:4}) { self.rehash(); } diff --git a/src/libstd/net_ip.rs b/src/libstd/net_ip.rs index d273138ed3d..84c3b755649 100644 --- a/src/libstd/net_ip.rs +++ b/src/libstd/net_ip.rs @@ -48,9 +48,9 @@ pub enum IpAddr { } /// Human-friendly feedback on why a parse_addr attempt failed -pub type ParseAddrErr = { - err_msg: ~str -}; +pub struct ParseAddrErr { + err_msg: ~str, +} /** * Convert a `IpAddr` to a str @@ -122,7 +122,7 @@ pub fn get_addr(node: &str, iotask: iotask) log(debug, fmt!("slice len %?", len)); let handle = create_uv_getaddrinfo_t(); let handle_ptr = ptr::addr_of(&handle); - let handle_data: GetAddrData = { + let handle_data = GetAddrData { output_ch: output_ch }; let handle_data_ptr = ptr::addr_of(&handle_data); @@ -187,7 +187,7 @@ pub mod v4 { } // the simple, old style numberic representation of // ipv4 - pub type Ipv4Rep = { a: u8, b: u8, c: u8, d:u8 }; + pub struct Ipv4Rep { a: u8, b: u8, c: u8, d: u8 } pub trait AsUnsafeU32 { unsafe fn as_u32() -> u32; @@ -207,14 +207,14 @@ pub mod v4 { } }); if parts.len() != 4 { - result::Err(fmt!("'%s' doesn't have 4 parts", ip)) - } - else if parts.contains(&256) { - result::Err(fmt!("invalid octal in addr '%s'", ip)) - } - else { - result::Ok({a: parts[0] as u8, b: parts[1] as u8, - c: parts[2] as u8, d: parts[3] as u8}) + Err(fmt!("'%s' doesn't have 4 parts", ip)) + } else if parts.contains(&256) { + Err(fmt!("invalid octal in addr '%s'", ip)) + } else { + Ok(Ipv4Rep { + a: parts[0] as u8, b: parts[1] as u8, + c: parts[2] as u8, d: parts[3] as u8, + }) } } pub fn try_parse_addr(ip: &str) -> result::Result<IpAddr,ParseAddrErr> { @@ -223,7 +223,7 @@ pub mod v4 { let ip_rep_result = parse_to_ipv4_rep(ip); if result::is_err(&ip_rep_result) { let err_str = result::get_err(&ip_rep_result); - return result::Err({err_msg: err_str}) + return result::Err(ParseAddrErr { err_msg: err_str }) } // ipv4_rep.as_u32 is unsafe :/ let input_is_inaddr_none = @@ -236,15 +236,16 @@ pub mod v4 { let ref_ip_rep_result = parse_to_ipv4_rep(reformatted_name); if result::is_err(&ref_ip_rep_result) { let err_str = result::get_err(&ref_ip_rep_result); - return result::Err({err_msg: err_str}) + return Err(ParseAddrErr { err_msg: err_str }) } + if result::get(&ref_ip_rep_result).as_u32() == INADDR_NONE && !input_is_inaddr_none { - return result::Err( - {err_msg: ~"uv_ip4_name produced invalid result."}) - } - else { - result::Ok(Ipv4(copy(new_addr))) + Err(ParseAddrErr { + err_msg: ~"uv_ip4_name produced invalid result.", + }) + } else { + Ok(Ipv4(copy(new_addr))) } } } @@ -289,19 +290,18 @@ pub mod v6 { // '::' appears to be uv_ip6_name() returns for bogus // parses.. if ip != &"::" && reparsed_name == ~"::" { - result::Err({err_msg:fmt!("failed to parse '%s'", - ip)}) + Err(ParseAddrErr { err_msg:fmt!("failed to parse '%s'", ip) }) } else { - result::Ok(Ipv6(new_addr)) + Ok(Ipv6(new_addr)) } } } } -type GetAddrData = { +struct GetAddrData { output_ch: oldcomm::Chan<result::Result<~[IpAddr],IpGetAddrErr>> -}; +} extern fn get_addr_cb(handle: *uv_getaddrinfo_t, status: libc::c_int, res: *addrinfo) { diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index aeb0c2cb613..aa5eec2b43c 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -83,10 +83,11 @@ pub fn TcpSocketBuf(data: @TcpBufferedSocketData) -> TcpSocketBuf { } /// Contains raw, string-based, error information returned from libuv -pub type TcpErrData = { +pub struct TcpErrData { err_name: ~str, - err_msg: ~str -}; + err_msg: ~str, +} + /// Details returned as part of a `result::err` result from `tcp::listen` pub enum TcpListenErrData { /** @@ -155,7 +156,7 @@ pub fn connect(input_ip: ip::IpAddr, port: uint, let reader_po = oldcomm::Port::<result::Result<~[u8], TcpErrData>>(); let stream_handle_ptr = malloc_uv_tcp_t(); *(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t(); - let socket_data = @{ + let socket_data = @TcpSocketData { reader_po: reader_po, reader_ch: oldcomm::Chan(&reader_po), stream_handle_ptr: stream_handle_ptr, @@ -231,7 +232,7 @@ pub fn connect(input_ip: ip::IpAddr, port: uint, // ip or somesuch let err_data = uv::ll::get_last_err_data(loop_ptr); oldcomm::send((*conn_data_ptr).result_ch, - ConnFailure(err_data.to_tcp_err())); + ConnFailure(err_data)); uv::ll::set_data_for_uv_handle(stream_handle_ptr, conn_data_ptr); uv::ll::close(stream_handle_ptr, @@ -243,7 +244,7 @@ pub fn connect(input_ip: ip::IpAddr, port: uint, // failure to create a tcp handle let err_data = uv::ll::get_last_err_data(loop_ptr); oldcomm::send((*conn_data_ptr).result_ch, - ConnFailure(err_data.to_tcp_err())); + ConnFailure(err_data)); } } } @@ -513,7 +514,7 @@ pub fn accept(new_conn: TcpNewConnection) let iotask = (*server_data_ptr).iotask; let stream_handle_ptr = malloc_uv_tcp_t(); *(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t(); - let client_socket_data = @{ + let client_socket_data = @TcpSocketData { reader_po: reader_po, reader_ch: oldcomm::Chan(&reader_po), stream_handle_ptr : stream_handle_ptr, @@ -785,7 +786,7 @@ fn listen_common(host_ip: ip::IpAddr, port: uint, backlog: uint, * A buffered wrapper that you can cast as an `io::reader` or `io::writer` */ pub fn socket_buf(sock: TcpSocket) -> TcpSocketBuf { - TcpSocketBuf(@{ sock: move sock, mut buf: ~[] }) + TcpSocketBuf(@TcpBufferedSocketData { sock: sock, buf: ~[] }) } /// Convenience methods extending `net::tcp::tcp_socket` @@ -979,7 +980,7 @@ fn read_common_impl(socket_data: *TcpSocketData, timeout_msecs: uint) match move read_result { None => { log(debug, ~"tcp::read: timed out.."); - let err_data = { + let err_data = TcpErrData { err_name: ~"TIMEOUT", err_msg: ~"req timed out" }; @@ -1020,9 +1021,10 @@ fn read_stop_common_impl(socket_data: *TcpSocketData) -> } } }; + match oldcomm::recv(stop_po) { - Some(ref err_data) => result::Err(err_data.to_tcp_err()), - None => result::Ok(()) + Some(move err_data) => Err(err_data), + None => Ok(()) } } } @@ -1108,8 +1110,8 @@ fn write_common_impl(socket_data_ptr: *TcpSocketData, // ownership of everything to the I/O task and let it deal with the // aftermath, so we don't have to sit here blocking. match oldcomm::recv(result_po) { - TcpWriteSuccess => result::Ok(()), - TcpWriteError(ref err_data) => result::Err(err_data.to_tcp_err()) + TcpWriteSuccess => Ok(()), + TcpWriteError(move err_data) => Err(err_data) } } } @@ -1118,15 +1120,15 @@ enum TcpNewConnection { NewTcpConn(*uv::ll::uv_tcp_t) } -type TcpListenFcData = { +struct TcpListenFcData { server_stream_ptr: *uv::ll::uv_tcp_t, stream_closed_ch: oldcomm::Chan<()>, kill_ch: oldcomm::Chan<Option<TcpErrData>>, on_connect_cb: fn~(*uv::ll::uv_tcp_t), iotask: IoTask, ipv6: bool, - mut active: bool -}; + mut active: bool, +} extern fn tcp_lfc_close_cb(handle: *uv::ll::uv_tcp_t) { unsafe { @@ -1191,7 +1193,7 @@ trait ToTcpErr { impl uv::ll::uv_err_data: ToTcpErr { fn to_tcp_err() -> TcpErrData { - { err_name: self.err_name, err_msg: self.err_msg } + TcpErrData { err_name: self.err_name, err_msg: self.err_msg } } } @@ -1244,9 +1246,9 @@ extern fn on_alloc_cb(handle: *libc::c_void, } } -type TcpSocketCloseData = { - closed_ch: oldcomm::Chan<()> -}; +struct TcpSocketCloseData { + closed_ch: oldcomm::Chan<()>, +} extern fn tcp_socket_dtor_close_cb(handle: *uv::ll::uv_tcp_t) { unsafe { @@ -1273,19 +1275,19 @@ extern fn tcp_write_complete_cb(write_req: *uv::ll::uv_write_t, let err_data = uv::ll::get_last_err_data(loop_ptr); log(debug, ~"failure to write"); oldcomm::send((*write_data_ptr).result_ch, - TcpWriteError(err_data)); + TcpWriteError(err_data.to_tcp_err())); } } } -type WriteReqData = { - result_ch: oldcomm::Chan<TcpWriteResult> -}; +struct WriteReqData { + result_ch: oldcomm::Chan<TcpWriteResult>, +} -type ConnectReqData = { +struct ConnectReqData { result_ch: oldcomm::Chan<ConnAttempt>, - closed_signal_ch: oldcomm::Chan<()> -}; + closed_signal_ch: oldcomm::Chan<()>, +} extern fn stream_error_close_cb(handle: *uv::ll::uv_tcp_t) { unsafe { @@ -1337,20 +1339,20 @@ enum ConnAttempt { ConnFailure(uv::ll::uv_err_data) } -type TcpSocketData = { +struct TcpSocketData { reader_po: oldcomm::Port<result::Result<~[u8], TcpErrData>>, reader_ch: oldcomm::Chan<result::Result<~[u8], TcpErrData>>, stream_handle_ptr: *uv::ll::uv_tcp_t, connect_req: uv::ll::uv_connect_t, write_req: uv::ll::uv_write_t, ipv6: bool, - iotask: IoTask -}; + iotask: IoTask, +} -type TcpBufferedSocketData = { +struct TcpBufferedSocketData { sock: TcpSocket, - mut buf: ~[u8] -}; + mut buf: ~[u8], +} //#[cfg(test)] pub mod test { diff --git a/src/libstd/rope.rs b/src/libstd/rope.rs index c469824f48d..8c6d77c8828 100644 --- a/src/libstd/rope.rs +++ b/src/libstd/rope.rs @@ -595,12 +595,12 @@ pub mod node { * string can be shared between several ropes, e.g. for indexing * purposes. */ - pub type Leaf = { + pub struct Leaf { byte_offset: uint, - byte_len: uint, - char_len: uint, - content: @~str - }; + byte_len: uint, + char_len: uint, + content: @~str, + } /** * A node obtained from the concatenation of two other nodes @@ -619,14 +619,14 @@ pub mod node { * * Used for rebalancing and to allocate stacks for traversals. */ - pub type Concat = { + pub struct Concat { //FIXME (#2744): Perhaps a `vec` instead of `left`/`right` - left: @Node, - right: @Node, + left: @Node, + right: @Node, char_len: uint, byte_len: uint, - height: uint - }; + height: uint, + } pub enum Node { /// A leaf consisting in a `str` @@ -709,11 +709,12 @@ pub mod node { pub fn of_substr_unsafer(str: @~str, byte_start: uint, byte_len: uint, char_len: uint) -> @Node { assert(byte_start + byte_len <= str::len(*str)); - let candidate = @Leaf({ - byte_offset: byte_start, - byte_len: byte_len, - char_len: char_len, - content: str}); + let candidate = @Leaf(Leaf { + byte_offset: byte_start, + byte_len: byte_len, + char_len: char_len, + content: str, + }); if char_len <= hint_max_leaf_char_len { return candidate; } else { @@ -736,11 +737,11 @@ pub mod node { else { hint_max_leaf_char_len }; let chunk_byte_len = str::count_bytes(*str, offset, chunk_char_len); - nodes[i] = @Leaf({ + nodes[i] = @Leaf(Leaf { byte_offset: offset, - byte_len: chunk_byte_len, - char_len: chunk_char_len, - content: str + byte_len: chunk_byte_len, + char_len: chunk_char_len, + content: str, }); offset += chunk_byte_len; @@ -767,15 +768,15 @@ pub mod node { pub pure fn byte_len(node: @Node) -> uint { //FIXME (#2744): Could we do this without the pattern-matching? match (*node) { - Leaf(y) => return y.byte_len, - Concat(ref y) => return y.byte_len + Leaf(y) => y.byte_len, + Concat(ref y) => y.byte_len } } pub pure fn char_len(node: @Node) -> uint { match (*node) { - Leaf(y) => return y.char_len, - Concat(ref y) => return y.char_len + Leaf(y) => y.char_len, + Concat(ref y) => y.char_len } } @@ -867,15 +868,15 @@ pub mod node { pub fn flatten(node: @Node) -> @Node { unsafe { match (*node) { - Leaf(_) => return node, - Concat(ref x) => { - return @Leaf({ - byte_offset: 0u, - byte_len: x.byte_len, - char_len: x.char_len, - content: @serialize_node(node) - }) - } + Leaf(_) => node, + Concat(ref x) => { + @Leaf(Leaf { + byte_offset: 0u, + byte_len: x.byte_len, + char_len: x.char_len, + content: @serialize_node(node), + }) + } } } } @@ -943,10 +944,12 @@ pub mod node { node::Leaf(x) => { let char_len = str::count_chars(*x.content, byte_offset, byte_len); - return @Leaf({byte_offset: byte_offset, - byte_len: byte_len, - char_len: char_len, - content: x.content}); + return @Leaf(Leaf { + byte_offset: byte_offset, + byte_len: byte_len, + char_len: char_len, + content: x.content, + }); } node::Concat(ref x) => { let left_len: uint = node::byte_len(x.left); @@ -1007,10 +1010,12 @@ pub mod node { str::count_bytes(*x.content, 0u, char_offset); let byte_len = str::count_bytes(*x.content, byte_offset, char_len); - return @Leaf({byte_offset: byte_offset, - byte_len: byte_len, - char_len: char_len, - content: x.content}); + return @Leaf(Leaf { + byte_offset: byte_offset, + byte_len: byte_len, + char_len: char_len, + content: x.content, + }); } node::Concat(ref x) => { if char_offset == 0u && char_len == x.char_len {return node;} @@ -1040,18 +1045,19 @@ pub mod node { } pub fn concat2(left: @Node, right: @Node) -> @Node { - return @Concat({left : left, - right : right, - char_len: char_len(left) + char_len(right), - byte_len: byte_len(left) + byte_len(right), - height: uint::max(height(left), height(right)) + 1u - }) + @Concat(Concat { + left: left, + right: right, + char_len: char_len(left) + char_len(right), + byte_len: byte_len(left) + byte_len(right), + height: uint::max(height(left), height(right)) + 1u, + }) } pub pure fn height(node: @Node) -> uint { match (*node) { - Leaf(_) => return 0u, - Concat(ref x) => return x.height + Leaf(_) => 0u, + Concat(ref x) => x.height, } } @@ -1135,7 +1141,7 @@ pub mod node { loop { match *node { Leaf(x) => return str::char_at(*x.content, pos), - Concat({left, right, _}) => { + Concat(Concat {left, right, _}) => { let left_len = char_len(left); node = if left_len > pos { left } else { pos -= left_len; right }; @@ -1151,22 +1157,22 @@ pub mod node { use core::prelude::*; use core::vec; - pub type T = { - stack: ~[mut @Node], - mut stackpos: int - }; + pub struct T { + stack: ~[mut @Node], + mut stackpos: int, + } pub fn empty() -> T { let stack : ~[mut @Node] = ~[mut]; - return {stack: move stack, mut stackpos: -1} + T { stack: stack, stackpos: -1 } } pub fn start(node: @Node) -> T { let stack = vec::cast_to_mut( vec::from_elem(height(node)+1u, node)); - return { - stack: move stack, - mut stackpos: 0 + T { + stack: stack, + stackpos: 0, } } @@ -1196,25 +1202,25 @@ pub mod node { use core::prelude::*; use core::str; - pub type T = { + pub struct T { leaf_iterator: leaf_iterator::T, mut leaf: Option<Leaf>, - mut leaf_byte_pos: uint - }; + mut leaf_byte_pos: uint, + } pub fn start(node: @Node) -> T { - return { + T { leaf_iterator: leaf_iterator::start(node), - mut leaf: option::None, - mut leaf_byte_pos: 0u + leaf: option::None, + leaf_byte_pos: 0u, } } pub fn empty() -> T { - return { + T { leaf_iterator: leaf_iterator::empty(), - mut leaf: option::None, - mut leaf_byte_pos: 0u + leaf: option::None, + leaf_byte_pos: 0u, } } diff --git a/src/libstd/sha1.rs b/src/libstd/sha1.rs index 7a524eb7985..51c209b1b5f 100644 --- a/src/libstd/sha1.rs +++ b/src/libstd/sha1.rs @@ -284,7 +284,10 @@ mod tests { #[test] fn test() { unsafe { - type Test = {input: ~str, output: ~[u8]}; + struct Test { + input: ~str, + output: ~[u8], + } fn a_million_letter_a() -> ~str { let mut i = 0; @@ -297,47 +300,64 @@ mod tests { } // Test messages from FIPS 180-1 - let fips_180_1_tests: ~[Test] = - ~[{input: ~"abc", - output: - ~[0xA9u8, 0x99u8, 0x3Eu8, 0x36u8, - 0x47u8, 0x06u8, 0x81u8, 0x6Au8, - 0xBAu8, 0x3Eu8, 0x25u8, 0x71u8, - 0x78u8, 0x50u8, 0xC2u8, 0x6Cu8, - 0x9Cu8, 0xD0u8, 0xD8u8, 0x9Du8]}, - {input: - ~"abcdbcdecdefdefgefghfghighij" + - ~"hijkijkljklmklmnlmnomnopnopq", - output: - ~[0x84u8, 0x98u8, 0x3Eu8, 0x44u8, - 0x1Cu8, 0x3Bu8, 0xD2u8, 0x6Eu8, - 0xBAu8, 0xAEu8, 0x4Au8, 0xA1u8, - 0xF9u8, 0x51u8, 0x29u8, 0xE5u8, - 0xE5u8, 0x46u8, 0x70u8, 0xF1u8]}, - {input: a_million_letter_a(), - output: - ~[0x34u8, 0xAAu8, 0x97u8, 0x3Cu8, - 0xD4u8, 0xC4u8, 0xDAu8, 0xA4u8, - 0xF6u8, 0x1Eu8, 0xEBu8, 0x2Bu8, - 0xDBu8, 0xADu8, 0x27u8, 0x31u8, - 0x65u8, 0x34u8, 0x01u8, 0x6Fu8]}]; + let fips_180_1_tests = ~[ + Test { + input: ~"abc", + output: ~[ + 0xA9u8, 0x99u8, 0x3Eu8, 0x36u8, + 0x47u8, 0x06u8, 0x81u8, 0x6Au8, + 0xBAu8, 0x3Eu8, 0x25u8, 0x71u8, + 0x78u8, 0x50u8, 0xC2u8, 0x6Cu8, + 0x9Cu8, 0xD0u8, 0xD8u8, 0x9Du8, + ], + }, + Test { + input: + ~"abcdbcdecdefdefgefghfghighij" + + ~"hijkijkljklmklmnlmnomnopnopq", + output: ~[ + 0x84u8, 0x98u8, 0x3Eu8, 0x44u8, + 0x1Cu8, 0x3Bu8, 0xD2u8, 0x6Eu8, + 0xBAu8, 0xAEu8, 0x4Au8, 0xA1u8, + 0xF9u8, 0x51u8, 0x29u8, 0xE5u8, + 0xE5u8, 0x46u8, 0x70u8, 0xF1u8, + ], + }, + Test { + input: a_million_letter_a(), + output: ~[ + 0x34u8, 0xAAu8, 0x97u8, 0x3Cu8, + 0xD4u8, 0xC4u8, 0xDAu8, 0xA4u8, + 0xF6u8, 0x1Eu8, 0xEBu8, 0x2Bu8, + 0xDBu8, 0xADu8, 0x27u8, 0x31u8, + 0x65u8, 0x34u8, 0x01u8, 0x6Fu8, + ], + }, + ]; // Examples from wikipedia - let wikipedia_tests: ~[Test] = - ~[{input: ~"The quick brown fox jumps over the lazy dog", - output: - ~[0x2fu8, 0xd4u8, 0xe1u8, 0xc6u8, - 0x7au8, 0x2du8, 0x28u8, 0xfcu8, - 0xedu8, 0x84u8, 0x9eu8, 0xe1u8, - 0xbbu8, 0x76u8, 0xe7u8, 0x39u8, - 0x1bu8, 0x93u8, 0xebu8, 0x12u8]}, - {input: ~"The quick brown fox jumps over the lazy cog", - output: - ~[0xdeu8, 0x9fu8, 0x2cu8, 0x7fu8, - 0xd2u8, 0x5eu8, 0x1bu8, 0x3au8, - 0xfau8, 0xd3u8, 0xe8u8, 0x5au8, - 0x0bu8, 0xd1u8, 0x7du8, 0x9bu8, - 0x10u8, 0x0du8, 0xb4u8, 0xb3u8]}]; + let wikipedia_tests = ~[ + Test { + input: ~"The quick brown fox jumps over the lazy dog", + output: ~[ + 0x2fu8, 0xd4u8, 0xe1u8, 0xc6u8, + 0x7au8, 0x2du8, 0x28u8, 0xfcu8, + 0xedu8, 0x84u8, 0x9eu8, 0xe1u8, + 0xbbu8, 0x76u8, 0xe7u8, 0x39u8, + 0x1bu8, 0x93u8, 0xebu8, 0x12u8, + ], + }, + Test { + input: ~"The quick brown fox jumps over the lazy cog", + output: ~[ + 0xdeu8, 0x9fu8, 0x2cu8, 0x7fu8, + 0xd2u8, 0x5eu8, 0x1bu8, 0x3au8, + 0xfau8, 0xd3u8, 0xe8u8, 0x5au8, + 0x0bu8, 0xd1u8, 0x7du8, 0x9bu8, + 0x10u8, 0x0du8, 0xb4u8, 0xb3u8, + ], + }, + ]; let tests = fips_180_1_tests + wikipedia_tests; fn check_vec_eq(v0: ~[u8], v1: ~[u8]) { assert (vec::len::<u8>(v0) == vec::len::<u8>(v1)); diff --git a/src/libstd/smallintmap.rs b/src/libstd/smallintmap.rs index dbcb0c6aeec..feabb678d66 100644 --- a/src/libstd/smallintmap.rs +++ b/src/libstd/smallintmap.rs @@ -25,7 +25,9 @@ use core::prelude::*; // FIXME (#2347): Should not be @; there's a bug somewhere in rustc that // requires this to be. -type SmallIntMap_<T: Copy> = {v: DVec<Option<T>>}; +struct SmallIntMap_<T: Copy> { + v: DVec<Option<T>>, +} pub enum SmallIntMap<T:Copy> { SmallIntMap_(@SmallIntMap_<T>) @@ -34,7 +36,7 @@ pub enum SmallIntMap<T:Copy> { /// Create a smallintmap pub fn mk<T: Copy>() -> SmallIntMap<T> { let v = DVec(); - return SmallIntMap_(@{v: move v}); + SmallIntMap_(@SmallIntMap_ { v: v } ) } /** diff --git a/src/libstd/test.rs b/src/libstd/test.rs index 95523c1e578..7b94702f974 100644 --- a/src/libstd/test.rs +++ b/src/libstd/test.rs @@ -74,8 +74,11 @@ pub fn test_main(args: &[~str], tests: &[TestDesc]) { if !run_tests_console(&opts, tests) { fail ~"Some tests failed"; } } -pub type TestOpts = {filter: Option<~str>, run_ignored: bool, - logfile: Option<~str>}; +pub struct TestOpts { + filter: Option<~str>, + run_ignored: bool, + logfile: Option<~str>, +} type OptRes = Either<TestOpts, ~str>; @@ -97,10 +100,13 @@ pub fn parse_opts(args: &[~str]) -> OptRes { let run_ignored = getopts::opt_present(&matches, ~"ignored"); let logfile = getopts::opt_maybe_str(&matches, ~"logfile"); - let test_opts = {filter: filter, run_ignored: run_ignored, - logfile: logfile}; + let test_opts = TestOpts { + filter: filter, + run_ignored: run_ignored, + logfile: logfile, + }; - return either::Left(test_opts); + either::Left(test_opts) } #[deriving_eq] @@ -396,7 +402,10 @@ pub fn filter_tests(opts: &TestOpts, move filtered } -type TestFuture = {test: TestDesc, wait: fn@() -> TestResult}; +struct TestFuture { + test: TestDesc, + wait: fn@() -> TestResult, +} pub fn run_test(test: TestDesc, monitor_ch: oldcomm::Chan<MonitorMsg>) { if test.ignore { @@ -431,7 +440,7 @@ mod tests { #[legacy_exports]; use test::{TrFailed, TrIgnored, TrOk, filter_tests, parse_opts, TestDesc}; - use test::{run_test}; + use test::{TestOpts, run_test}; use core::either; use core::oldcomm; @@ -528,13 +537,26 @@ mod tests { // When we run ignored tests the test filter should filter out all the // unignored tests and flip the ignore flag on the rest to false - let opts = {filter: option::None, run_ignored: true, - logfile: option::None}; - let tests = - ~[TestDesc {name: ~"1", testfn: fn~() { }, - ignore: true, should_fail: false}, - TestDesc {name: ~"2", testfn: fn~() { }, - ignore: false, should_fail: false}]; + let opts = TestOpts { + filter: option::None, + run_ignored: true, + logfile: option::None, + }; + + let tests = ~[ + TestDesc { + name: ~"1", + testfn: fn~() { }, + ignore: true, + should_fail: false, + }, + TestDesc { + name: ~"2", + testfn: fn~() { }, + ignore: false, + should_fail: false, + }, + ]; let filtered = filter_tests(&opts, tests); assert (vec::len(filtered) == 1u); @@ -544,8 +566,11 @@ mod tests { #[test] fn sort_tests() { - let opts = {filter: option::None, run_ignored: false, - logfile: option::None}; + let opts = TestOpts { + filter: option::None, + run_ignored: false, + logfile: option::None, + }; let names = ~[~"sha1::test", ~"int::test_to_str", ~"int::test_pow", diff --git a/src/libstd/time.rs b/src/libstd/time.rs index 61202401359..731767d475f 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -902,7 +902,6 @@ mod tests { use core::uint; use core::vec; - #[test] fn test_get_time() { const some_recent_date: i64 = 1325376000i64; // 2012-01-01T00:00:00Z const some_future_date: i64 = 1577836800i64; // 2020-01-01T00:00:00Z @@ -926,7 +925,6 @@ mod tests { } } - #[test] fn test_precise_time() { let s0 = precise_time_s(); let ns1 = precise_time_ns(); @@ -944,7 +942,6 @@ mod tests { assert ns2 >= ns1; } - #[test] fn test_at_utc() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -966,7 +963,6 @@ mod tests { assert utc.tm_nsec == 54321_i32; } - #[test] fn test_at() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -995,7 +991,6 @@ mod tests { assert local.tm_nsec == 54321_i32; } - #[test] fn test_to_timespec() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -1007,7 +1002,6 @@ mod tests { assert utc.to_local().to_timespec() == time; } - #[test] fn test_conversions() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -1024,7 +1018,6 @@ mod tests { assert utc.to_local().to_utc() == utc; } - #[test] fn test_strptime() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -1179,8 +1172,6 @@ mod tests { assert test(~"%", ~"%%"); } - #[test] - #[ignore(reason = "randomred")] fn test_ctime() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -1195,8 +1186,6 @@ mod tests { assert local.ctime() == ~"Fri Feb 13 15:31:30 2009"; } - #[test] - #[ignore(reason = "randomred")] fn test_strftime() { os::setenv(~"TZ", ~"America/Los_Angeles"); tzset(); @@ -1270,7 +1259,6 @@ mod tests { assert utc.rfc3339() == ~"2009-02-13T23:31:30Z"; } - #[test] fn test_timespec_eq_ord() { use core::cmp::{eq, ge, gt, le, lt, ne}; @@ -1303,4 +1291,20 @@ mod tests { assert gt(c, b); assert gt(d, c); } + + #[test] + fn run_tests() { + // The tests race on tzset. So instead of having many independent + // tests, we will just call the functions now. + test_get_time(); + test_precise_time(); + test_at_utc(); + test_at(); + test_to_timespec(); + test_conversions(); + test_strptime(); + test_ctime(); + test_strftime(); + test_timespec_eq_ord(); + } } diff --git a/src/libstd/uv_iotask.rs b/src/libstd/uv_iotask.rs index 667708cfb3f..0a3d64a02a4 100644 --- a/src/libstd/uv_iotask.rs +++ b/src/libstd/uv_iotask.rs @@ -111,7 +111,7 @@ fn run_loop(iotask_ch: Chan<IoTask>) { ll::async_init(loop_ptr, async_handle, wake_up_cb); // initialize our loop data and store it in the loop - let data: IoTaskLoopData = { + let data = IoTaskLoopData { async_handle: async_handle, msg_po: Port() }; @@ -134,10 +134,10 @@ fn run_loop(iotask_ch: Chan<IoTask>) { } // data that lives for the lifetime of the high-evel oo -type IoTaskLoopData = { +struct IoTaskLoopData { async_handle: *ll::uv_async_t, - msg_po: Port<IoTaskMsg> -}; + msg_po: Port<IoTaskMsg>, +} fn send_msg(iotask: IoTask, msg: IoTaskMsg) { unsafe { @@ -214,10 +214,10 @@ mod test { ll::close(handle, async_close_cb); } } - type AhData = { + struct AhData { iotask: IoTask, - exit_ch: oldcomm::Chan<()> - }; + exit_ch: oldcomm::Chan<()>, + } fn impl_uv_iotask_async(iotask: IoTask) { unsafe { let async_handle = ll::async_t(); diff --git a/src/libstd/uv_ll.rs b/src/libstd/uv_ll.rs index 17b11945028..5060ae1a722 100644 --- a/src/libstd/uv_ll.rs +++ b/src/libstd/uv_ll.rs @@ -41,10 +41,10 @@ use core::str; use core::vec; // libuv struct mappings -pub type uv_ip4_addr = { +pub struct uv_ip4_addr { ip: ~[u8], - port: int -}; + port: int, +} pub type uv_ip6_addr = uv_ip4_addr; pub enum uv_handle_type { @@ -67,31 +67,31 @@ pub enum uv_handle_type { pub type handle_type = libc::c_uint; -pub type uv_handle_fields = { +pub struct uv_handle_fields { loop_handle: *libc::c_void, type_: handle_type, close_cb: *u8, mut data: *libc::c_void, -}; +} // unix size: 8 -pub type uv_err_t = { +pub struct uv_err_t { code: libc::c_int, sys_errno_: libc::c_int -}; +} // don't create one of these directly. instead, // count on it appearing in libuv callbacks or embedded // in other types as a pointer to be used in other // operations (so mostly treat it as opaque, once you // have it in this form..) -pub type uv_stream_t = { - fields: uv_handle_fields -}; +pub struct uv_stream_t { + fields: uv_handle_fields, +} // 64bit unix size: 272 #[cfg(unix)] -pub type uv_tcp_t = { +pub struct uv_tcp_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, @@ -101,24 +101,24 @@ pub type uv_tcp_t = { a20: *u8, a21: *u8, a22: *u8, a23: *u8, a24: *u8, a25: *u8, a26: *u8, a27: *u8, a28: *u8, - a30: uv_tcp_t_32bit_unix_riders -}; + a30: uv_tcp_t_32bit_unix_riders, +} // 32bit unix size: 328 (164) #[cfg(target_arch="x86_64")] -pub type uv_tcp_t_32bit_unix_riders = { - a29: *u8 -}; +pub struct uv_tcp_t_32bit_unix_riders { + a29: *u8, +} #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] -pub type uv_tcp_t_32bit_unix_riders = { +pub struct uv_tcp_t_32bit_unix_riders { a29: *u8, a30: *u8, a31: *u8, a32: *u8, a33: *u8, a34: *u8, - a35: *u8, a36: *u8 -}; + a35: *u8, a36: *u8, +} // 32bit win32 size: 240 (120) #[cfg(windows)] -pub type uv_tcp_t = { +pub struct uv_tcp_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, @@ -126,140 +126,140 @@ pub type uv_tcp_t = { a12: *u8, a13: *u8, a14: *u8, a15: *u8, a16: *u8, a17: *u8, a18: *u8, a19: *u8, a20: *u8, a21: *u8, a22: *u8, a23: *u8, - a24: *u8, a25: *u8 -}; + a24: *u8, a25: *u8, +} // unix size: 48 #[cfg(unix)] -pub type uv_connect_t = { +pub struct uv_connect_t { a00: *u8, a01: *u8, a02: *u8, a03: *u8, - a04: *u8, a05: *u8 -}; + a04: *u8, a05: *u8, +} // win32 size: 88 (44) #[cfg(windows)] -pub type uv_connect_t = { +pub struct uv_connect_t { a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, - a08: *u8, a09: *u8, a10: *u8 -}; + a08: *u8, a09: *u8, a10: *u8, +} // unix size: 16 -pub type uv_buf_t = { +pub struct uv_buf_t { base: *u8, - len: libc::size_t -}; + len: libc::size_t, +} // no gen stub method.. should create // it via uv::direct::buf_init() // unix size: 144 #[cfg(unix)] -pub type uv_write_t = { +pub struct uv_write_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, a08: *u8, a09: *u8, a10: *u8, a11: *u8, a12: *u8, - a14: uv_write_t_32bit_unix_riders -}; + a14: uv_write_t_32bit_unix_riders, +} #[cfg(target_arch="x86_64")] -pub type uv_write_t_32bit_unix_riders = { - a13: *u8 -}; +pub struct uv_write_t_32bit_unix_riders { + a13: *u8, +} #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] -pub type uv_write_t_32bit_unix_riders = { - a13: *u8, a14: *u8 -}; +pub struct uv_write_t_32bit_unix_riders { + a13: *u8, a14: *u8, +} // win32 size: 136 (68) #[cfg(windows)] -pub type uv_write_t = { +pub struct uv_write_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, a08: *u8, a09: *u8, a10: *u8, a11: *u8, - a12: *u8 -}; + a12: *u8, +} // 64bit unix size: 120 // 32bit unix size: 152 (76) #[cfg(unix)] -pub type uv_async_t = { +pub struct uv_async_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, a08: *u8, a09: *u8, - a11: uv_async_t_32bit_unix_riders -}; + a11: uv_async_t_32bit_unix_riders, +} #[cfg(target_arch="x86_64")] -pub type uv_async_t_32bit_unix_riders = { - a10: *u8 -}; +pub struct uv_async_t_32bit_unix_riders { + a10: *u8, +} #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] -pub type uv_async_t_32bit_unix_riders = { - a10: *u8, a11: *u8, a12: *u8, a13: *u8 -}; +pub struct uv_async_t_32bit_unix_riders { + a10: *u8, a11: *u8, a12: *u8, a13: *u8, +} // win32 size 132 (68) #[cfg(windows)] -pub type uv_async_t = { +pub struct uv_async_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, a08: *u8, a09: *u8, a10: *u8, a11: *u8, - a12: *u8 -}; + a12: *u8, +} // 64bit unix size: 128 // 32bit unix size: 84 #[cfg(unix)] -pub type uv_timer_t = { +pub struct uv_timer_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, a08: *u8, a09: *u8, - a11: uv_timer_t_32bit_unix_riders -}; + a11: uv_timer_t_32bit_unix_riders, +} #[cfg(target_arch="x86_64")] -pub type uv_timer_t_32bit_unix_riders = { - a10: *u8, a11: *u8 -}; +pub struct uv_timer_t_32bit_unix_riders { + a10: *u8, a11: *u8, +} #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] -pub type uv_timer_t_32bit_unix_riders = { +pub struct uv_timer_t_32bit_unix_riders { a10: *u8, a11: *u8, a12: *u8, a13: *u8, - a14: *u8, a15: *u8, a16: *u8 -}; + a14: *u8, a15: *u8, a16: *u8, +} // win32 size: 64 #[cfg(windows)] -pub type uv_timer_t = { +pub struct uv_timer_t { fields: uv_handle_fields, a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, a06: *u8, a07: *u8, - a08: *u8, a09: *u8, a10: *u8, a11: *u8 -}; + a08: *u8, a09: *u8, a10: *u8, a11: *u8, +} // unix size: 16 -pub type sockaddr_in = { +pub struct sockaddr_in { mut sin_family: u16, mut sin_port: u16, mut sin_addr: u32, // in_addr: this is an opaque, per-platform struct - mut sin_zero: (u8, u8, u8, u8, u8, u8, u8, u8) -}; + mut sin_zero: (u8, u8, u8, u8, u8, u8, u8, u8), +} // unix size: 28 .. FIXME #1645 // stuck with 32 becuse of rust padding structs? #[cfg(target_arch="x86_64")] -pub type sockaddr_in6 = { +pub struct sockaddr_in6 { a0: *u8, a1: *u8, - a2: *u8, a3: *u8 -}; + a2: *u8, a3: *u8, +} #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] -pub type sockaddr_in6 = { +pub struct sockaddr_in6 { a0: *u8, a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8, - a6: *u8, a7: *u8 -}; + a6: *u8, a7: *u8, +} // unix size: 28 .. FIXME #1645 // stuck with 32 becuse of rust padding structs? @@ -267,25 +267,25 @@ pub type addr_in = addr_in_impl::addr_in; #[cfg(unix)] pub mod addr_in_impl { #[cfg(target_arch="x86_64")] - pub type addr_in = { + pub struct addr_in { a0: *u8, a1: *u8, - a2: *u8, a3: *u8 - }; + a2: *u8, a3: *u8, + } #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] - pub type addr_in = { + pub struct addr_in { a0: *u8, a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8, a6: *u8, a7: *u8, - }; + } } #[cfg(windows)] pub mod addr_in_impl { - pub type addr_in = { + pub struct addr_in { a0: *u8, a1: *u8, - a2: *u8, a3: *u8 - }; + a2: *u8, a3: *u8, + } } // unix size: 48, 32bit: 32 @@ -294,42 +294,60 @@ pub type addrinfo = addrinfo_impl::addrinfo; #[cfg(target_os="android")] pub mod addrinfo_impl { #[cfg(target_arch="x86_64")] - pub type addrinfo = { + pub struct addrinfo { a00: *u8, a01: *u8, a02: *u8, a03: *u8, - a04: *u8, a05: *u8 - }; + a04: *u8, a05: *u8, + } #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] - pub type addrinfo = { + pub struct addrinfo { a00: *u8, a01: *u8, a02: *u8, a03: *u8, - a04: *u8, a05: *u8, a06: *u8, a07: *u8 - }; + a04: *u8, a05: *u8, a06: *u8, a07: *u8, + } } #[cfg(target_os="macos")] #[cfg(target_os="freebsd")] pub mod addrinfo_impl { - pub type addrinfo = { + pub struct addrinfo { a00: *u8, a01: *u8, a02: *u8, a03: *u8, - a04: *u8, a05: *u8 - }; + a04: *u8, a05: *u8, + } } #[cfg(windows)] pub mod addrinfo_impl { - pub type addrinfo = { + pub struct addrinfo { a00: *u8, a01: *u8, a02: *u8, a03: *u8, - a04: *u8, a05: *u8 - }; + a04: *u8, a05: *u8, + } } // unix size: 72 -pub type uv_getaddrinfo_t = { +pub struct uv_getaddrinfo_t { a00: *u8, a01: *u8, a02: *u8, a03: *u8, a04: *u8, a05: *u8, - a06: *u8, a07: *u8, a08: *u8 -}; + a06: *u8, a07: *u8, a08: *u8, +} pub mod uv_ll_struct_stubgen { - use uv_ll::{uv_async_t, uv_connect_t, uv_getaddrinfo_t, uv_tcp_t}; - use uv_ll::{uv_timer_t, uv_write_t}; + use uv_ll::{ + uv_async_t, + uv_connect_t, + uv_getaddrinfo_t, + uv_handle_fields, + uv_tcp_t, + uv_timer_t, + uv_write_t, + }; + + #[cfg(target_os = "linux")] + #[cfg(target_os = "android")] + #[cfg(target_os = "macos")] + #[cfg(target_os = "freebsd")] + use uv_ll::{ + uv_async_t_32bit_unix_riders, + uv_tcp_t_32bit_unix_riders, + uv_timer_t_32bit_unix_riders, + uv_write_t_32bit_unix_riders, + }; use core::ptr; @@ -343,9 +361,12 @@ pub mod uv_ll_struct_stubgen { return gen_stub_arch(); #[cfg(target_arch="x86_64")] pub fn gen_stub_arch() -> uv_tcp_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_tcp_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, @@ -361,17 +382,18 @@ pub mod uv_ll_struct_stubgen { a24: 0 as *u8, a25: 0 as *u8, a26: 0 as *u8, a27: 0 as *u8, a28: 0 as *u8, - a30: { - a29: 0 as *u8 - } - }; + a30: uv_tcp_t_32bit_unix_riders { a29: 0 as *u8 }, + } } #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] pub fn gen_stub_arch() -> uv_tcp_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_tcp_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, @@ -387,19 +409,22 @@ pub mod uv_ll_struct_stubgen { a24: 0 as *u8, a25: 0 as *u8, a26: 0 as *u8, a27: 0 as *u8, a28: 0 as *u8, - a30: { + a30: uv_tcp_t_32bit_unix_riders { a29: 0 as *u8, a30: 0 as *u8, a31: 0 as *u8, a32: 0 as *u8, a33: 0 as *u8, a34: 0 as *u8, - a35: 0 as *u8, a36: 0 as *u8 - } - }; + a35: 0 as *u8, a36: 0 as *u8, + }, + } } } #[cfg(windows)] pub fn gen_stub_os() -> uv_tcp_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_tcp_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, @@ -412,58 +437,62 @@ pub mod uv_ll_struct_stubgen { a19: 0 as *u8, a20: 0 as *u8, a21: 0 as *u8, a22: 0 as *u8, a23: 0 as *u8, - a24: 0 as *u8, a25: 0 as *u8 - }; + a24: 0 as *u8, a25: 0 as *u8, + } } } #[cfg(unix)] pub fn gen_stub_uv_connect_t() -> uv_connect_t { - return { + uv_connect_t { a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, - a04: 0 as *u8, a05: 0 as *u8 - }; + a04: 0 as *u8, a05: 0 as *u8, + } } #[cfg(windows)] pub fn gen_stub_uv_connect_t() -> uv_connect_t { - return { + uv_connect_t { a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, - a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8 - }; + a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8, + } } #[cfg(unix)] pub fn gen_stub_uv_async_t() -> uv_async_t { return gen_stub_arch(); #[cfg(target_arch = "x86_64")] pub fn gen_stub_arch() -> uv_async_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_async_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, - a11: { - a10: 0 as *u8 - } - }; + a11: uv_async_t_32bit_unix_riders { a10: 0 as *u8 }, + } } #[cfg(target_arch = "x86")] #[cfg(target_arch="arm")] pub fn gen_stub_arch() -> uv_async_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_async_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, - a11: { + a11: uv_async_t_32bit_unix_riders { a10: 0 as *u8, a11: 0 as *u8, a12: 0 as *u8, a13: 0 as *u8 } @@ -472,107 +501,133 @@ pub mod uv_ll_struct_stubgen { } #[cfg(windows)] pub fn gen_stub_uv_async_t() -> uv_async_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_async_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8, a11: 0 as *u8, - a12: 0 as *u8 - }; + a12: 0 as *u8, + } } #[cfg(unix)] pub fn gen_stub_uv_timer_t() -> uv_timer_t { return gen_stub_arch(); #[cfg(target_arch = "x86_64")] pub fn gen_stub_arch() -> uv_timer_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_timer_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, - a11: { + a11: uv_timer_t_32bit_unix_riders { a10: 0 as *u8, a11: 0 as *u8 - } - }; + }, + } } #[cfg(target_arch = "x86")] #[cfg(target_arch="arm")] pub fn gen_stub_arch() -> uv_timer_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_timer_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, - a11: { + a11: uv_timer_t_32bit_unix_riders { a10: 0 as *u8, a11: 0 as *u8, a12: 0 as *u8, a13: 0 as *u8, a14: 0 as *u8, a15: 0 as *u8, - a16: 0 as *u8 - } - }; + a16: 0 as *u8, + }, + } } } #[cfg(windows)] pub fn gen_stub_uv_timer_t() -> uv_timer_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_timer_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8, - a11: 0 as *u8 - }; + a11: 0 as *u8, + } } #[cfg(unix)] pub fn gen_stub_uv_write_t() -> uv_write_t { return gen_stub_arch(); #[cfg(target_arch="x86_64")] pub fn gen_stub_arch() -> uv_write_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_write_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8, a11: 0 as *u8, - a12: 0 as *u8, a14: { a13: 0 as *u8 } - }; + a12: 0 as *u8, + a14: uv_write_t_32bit_unix_riders { a13: 0 as *u8 }, + } } #[cfg(target_arch="x86")] #[cfg(target_arch="arm")] pub fn gen_stub_arch() -> uv_write_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_write_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8, a09: 0 as *u8, a10: 0 as *u8, a11: 0 as *u8, - a12: 0 as *u8, a14: { a13: 0 as *u8, a14: 0 as *u8 } + a12: 0 as *u8, + a14: uv_write_t_32bit_unix_riders { + a13: 0 as *u8, + a14: 0 as *u8, + } }; } } #[cfg(windows)] pub fn gen_stub_uv_write_t() -> uv_write_t { - return { fields: { loop_handle: ptr::null(), type_: 0u32, - close_cb: ptr::null(), - mut data: ptr::null() }, + uv_write_t { + fields: uv_handle_fields { + loop_handle: ptr::null(), type_: 0u32, + close_cb: ptr::null(), + data: ptr::null(), + }, a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, @@ -583,7 +638,7 @@ pub mod uv_ll_struct_stubgen { }; } pub fn gen_stub_uv_getaddrinfo_t() -> uv_getaddrinfo_t { - { + uv_getaddrinfo_t { a00: 0 as *u8, a01: 0 as *u8, a02: 0 as *u8, a03: 0 as *u8, a04: 0 as *u8, a05: 0 as *u8, a06: 0 as *u8, a07: 0 as *u8, a08: 0 as *u8 @@ -851,7 +906,7 @@ pub unsafe fn async_send(async_handle: *uv_async_t) { return rustrt::rust_uv_async_send(async_handle); } pub unsafe fn buf_init(input: *u8, len: uint) -> uv_buf_t { - let out_buf = { base: ptr::null(), len: 0 as libc::size_t }; + let out_buf = uv_buf_t { base: ptr::null(), len: 0 as libc::size_t }; let out_buf_ptr = ptr::addr_of(&out_buf); log(debug, fmt!("buf_init - input %u len %u out_buf: %u", input as uint, @@ -1043,13 +1098,13 @@ pub unsafe fn get_last_err_data(uv_loop: *libc::c_void) -> uv_err_data { let err_ptr = ptr::addr_of(&err); let err_name = str::raw::from_c_str(err_name(err_ptr)); let err_msg = str::raw::from_c_str(strerror(err_ptr)); - { err_name: err_name, err_msg: err_msg } + uv_err_data { err_name: err_name, err_msg: err_msg } } -pub type uv_err_data = { +pub struct uv_err_data { err_name: ~str, - err_msg: ~str -}; + err_msg: ~str, +} pub unsafe fn is_ipv4_addrinfo(input: *addrinfo) -> bool { rustrt::rust_uv_is_ipv4_addrinfo(input) @@ -1090,11 +1145,11 @@ pub mod test { tcp_read_error } - type request_wrapper = { + struct request_wrapper { write_req: *uv_write_t, req_buf: *~[uv_buf_t], - read_chan: *oldcomm::Chan<~str> - }; + read_chan: *oldcomm::Chan<~str>, + } extern fn after_close_cb(handle: *libc::c_void) { log(debug, fmt!("after uv_close! handle ptr: %?", @@ -1424,18 +1479,18 @@ pub mod test { } } - type tcp_server_data = { + struct tcp_server_data { client: *uv_tcp_t, server: *uv_tcp_t, server_kill_msg: ~str, server_resp_buf: *~[uv_buf_t], server_chan: *oldcomm::Chan<~str>, - server_write_req: *uv_write_t - }; + server_write_req: *uv_write_t, + } - type async_handle_data = { - continue_chan: *oldcomm::Chan<bool> - }; + struct async_handle_data { + continue_chan: *oldcomm::Chan<bool>, + } extern fn async_close_cb(handle: *libc::c_void) { log(debug, fmt!("SERVER: closing async cb... h: %?", @@ -1489,7 +1544,7 @@ pub mod test { { continue_chan: continue_chan }; let async_data_ptr = ptr::addr_of(&async_data); - let server_data: tcp_server_data = { + let server_data = tcp_server_data { client: tcp_client_ptr, server: tcp_server_ptr, server_kill_msg: kill_server_msg, |
