Skip to content

Commit f987904

Browse files
garethgareth
authored andcommitted
---
yaml --- r: 72597 b: refs/heads/dist-snap c: 544ac62 h: refs/heads/master i: 72595: 87a9291 v: v3
1 parent dee97ef commit f987904

File tree

23 files changed

+640
-295
lines changed

23 files changed

+640
-295
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
99
refs/heads/incoming: b50030718cf28f2a5a81857a26b57442734fe854
10-
refs/heads/dist-snap: a0d8873097a587163887e701c08373a1571f8973
10+
refs/heads/dist-snap: 544ac620ba131d0f58eb48f631338c0ea64e0f10
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1313
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/mk/rt.mk

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,14 +163,16 @@ endif
163163
ifdef CFG_WINDOWSY_$(1)
164164
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
165165
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
166+
CFLAGS="$$(CFG_GCCISH_CFLAGS)" \
167+
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS)" \
166168
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \
167169
OS=mingw \
168170
V=$$(VERBOSE)
169171
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
170172
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
171173
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
172-
CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
173-
LDFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1)))" \
174+
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
175+
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
174176
CC="$$(CC_$(1))" \
175177
CXX="$$(CXX_$(1))" \
176178
AR="$$(AR_$(1))" \
@@ -181,8 +183,8 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
181183
else
182184
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
183185
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
184-
CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
185-
LDFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1)))" \
186+
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
187+
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
186188
CC="$$(CC_$(1))" \
187189
CXX="$$(CXX_$(1))" \
188190
AR="$$(AR_$(1))" \

branches/dist-snap/src/libcore/hashmap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ pub impl <T:Hash + Eq> HashSet<T> {
833833
}
834834
}
835835

836-
#[test]
836+
#[cfg(test)]
837837
mod test_map {
838838
use container::{Container, Map, Set};
839839
use option::{None, Some};
@@ -1009,7 +1009,7 @@ mod test_map {
10091009
}
10101010
}
10111011

1012-
#[test]
1012+
#[cfg(test)]
10131013
mod test_set {
10141014
use super::*;
10151015
use container::{Container, Map, Set};

branches/dist-snap/src/libcore/iterator.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub trait Iterator<A> {
2929
///
3030
/// In the future these will be default methods instead of a utility trait.
3131
pub trait IteratorUtil<A> {
32-
fn chain(self, other: Self) -> ChainIterator<Self>;
32+
fn chain<U: Iterator<A>>(self, other: U) -> ChainIterator<Self, U>;
3333
fn zip<B, U: Iterator<B>>(self, other: U) -> ZipIterator<Self, U>;
3434
// FIXME: #5898: should be called map
3535
fn transform<'r, B>(self, f: &'r fn(A) -> B) -> MapIterator<'r, A, B, Self>;
@@ -50,7 +50,7 @@ pub trait IteratorUtil<A> {
5050
/// In the future these will be default methods instead of a utility trait.
5151
impl<A, T: Iterator<A>> IteratorUtil<A> for T {
5252
#[inline(always)]
53-
fn chain(self, other: T) -> ChainIterator<T> {
53+
fn chain<U: Iterator<A>>(self, other: U) -> ChainIterator<T, U> {
5454
ChainIterator{a: self, b: other, flag: false}
5555
}
5656

@@ -115,13 +115,13 @@ impl<A, T: Iterator<A>> IteratorUtil<A> for T {
115115
}
116116
}
117117

118-
pub struct ChainIterator<T> {
118+
pub struct ChainIterator<T, U> {
119119
priv a: T,
120-
priv b: T,
120+
priv b: U,
121121
priv flag: bool
122122
}
123123

124-
impl<A, T: Iterator<A>> Iterator<A> for ChainIterator<T> {
124+
impl<A, T: Iterator<A>, U: Iterator<A>> Iterator<A> for ChainIterator<T, U> {
125125
#[inline]
126126
fn next(&mut self) -> Option<A> {
127127
if self.flag {
@@ -385,7 +385,7 @@ mod tests {
385385
#[test]
386386
fn test_iterator_chain() {
387387
let xs = [0u, 1, 2, 3, 4, 5];
388-
let ys = [30, 40, 50, 60];
388+
let ys = [30u, 40, 50, 60];
389389
let expected = [0, 1, 2, 3, 4, 5, 30, 40, 50, 60];
390390
let mut it = xs.iter().chain(ys.iter());
391391
let mut i = 0;
@@ -394,6 +394,15 @@ mod tests {
394394
i += 1;
395395
}
396396
assert_eq!(i, expected.len());
397+
398+
let ys = Counter::new(30u, 10).take(4);
399+
let mut it = xs.iter().transform(|&x| x).chain(ys);
400+
let mut i = 0;
401+
for it.advance |x: uint| {
402+
assert_eq!(x, expected[i]);
403+
i += 1;
404+
}
405+
assert_eq!(i, expected.len());
397406
}
398407

399408
#[test]

branches/dist-snap/src/libcore/libc.rs

Lines changed: 127 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,12 +582,16 @@ pub mod types {
582582

583583
pub type LPWSTR = *mut WCHAR;
584584
pub type LPSTR = *mut CHAR;
585+
pub type LPTSTR = *mut CHAR;
585586

586587
// Not really, but opaque to us.
587588
pub type LPSECURITY_ATTRIBUTES = LPVOID;
588589

589590
pub type LPVOID = *mut c_void;
591+
pub type LPBYTE = *mut BYTE;
590592
pub type LPWORD = *mut WORD;
593+
pub type LPDWORD = *mut DWORD;
594+
pub type LPHANDLE = *mut HANDLE;
591595

592596
pub type LRESULT = LONG_PTR;
593597
pub type PBOOL = *mut BOOL;
@@ -596,6 +600,36 @@ pub mod types {
596600

597601
pub type time64_t = i64;
598602
pub type int64 = i64;
603+
604+
pub struct STARTUPINFO {
605+
cb: DWORD,
606+
lpReserved: LPTSTR,
607+
lpDesktop: LPTSTR,
608+
lpTitle: LPTSTR,
609+
dwX: DWORD,
610+
dwY: DWORD,
611+
dwXSize: DWORD,
612+
dwYSize: DWORD,
613+
dwXCountChars: DWORD,
614+
dwYCountCharts: DWORD,
615+
dwFillAttribute: DWORD,
616+
dwFlags: DWORD,
617+
wShowWindow: WORD,
618+
cbReserved2: WORD,
619+
lpReserved2: LPBYTE,
620+
hStdInput: HANDLE,
621+
hStdOutput: HANDLE,
622+
hStdError: HANDLE
623+
}
624+
pub type LPSTARTUPINFO = *mut STARTUPINFO;
625+
626+
pub struct PROCESS_INFORMATION {
627+
hProcess: HANDLE,
628+
hThread: HANDLE,
629+
dwProcessId: DWORD,
630+
dwThreadId: DWORD
631+
}
632+
pub type LPPROCESS_INFORMATION = *mut PROCESS_INFORMATION;
599633
}
600634
}
601635
}
@@ -848,13 +882,62 @@ pub mod consts {
848882
pub mod bsd44 {
849883
}
850884
pub mod extra {
885+
use libc::types::os::arch::extra::{DWORD, BOOL};
886+
887+
pub static TRUE : BOOL = 1;
888+
pub static FALSE : BOOL = 0;
889+
851890
pub static O_TEXT : int = 16384;
852891
pub static O_BINARY : int = 32768;
853892
pub static O_NOINHERIT: int = 128;
854893

855894
pub static ERROR_SUCCESS : int = 0;
856895
pub static ERROR_INSUFFICIENT_BUFFER : int = 122;
857896
pub static INVALID_HANDLE_VALUE: int = -1;
897+
898+
pub static DELETE : DWORD = 0x00010000;
899+
pub static READ_CONTROL : DWORD = 0x00020000;
900+
pub static SYNCHRONIZE : DWORD = 0x00100000;
901+
pub static WRITE_DAC : DWORD = 0x00040000;
902+
pub static WRITE_OWNER : DWORD = 0x00080000;
903+
904+
pub static PROCESS_CREATE_PROCESS : DWORD = 0x0080;
905+
pub static PROCESS_CREATE_THREAD : DWORD = 0x0002;
906+
pub static PROCESS_DUP_HANDLE : DWORD = 0x0040;
907+
pub static PROCESS_QUERY_INFORMATION : DWORD = 0x0400;
908+
pub static PROCESS_QUERY_LIMITED_INFORMATION : DWORD = 0x1000;
909+
pub static PROCESS_SET_INFORMATION : DWORD = 0x0200;
910+
pub static PROCESS_SET_QUOTA : DWORD = 0x0100;
911+
pub static PROCESS_SUSPEND_RESUME : DWORD = 0x0800;
912+
pub static PROCESS_TERMINATE : DWORD = 0x0001;
913+
pub static PROCESS_VM_OPERATION : DWORD = 0x0008;
914+
pub static PROCESS_VM_READ : DWORD = 0x0010;
915+
pub static PROCESS_VM_WRITE : DWORD = 0x0020;
916+
917+
pub static STARTF_FORCEONFEEDBACK : DWORD = 0x00000040;
918+
pub static STARTF_FORCEOFFFEEDBACK : DWORD = 0x00000080;
919+
pub static STARTF_PREVENTPINNING : DWORD = 0x00002000;
920+
pub static STARTF_RUNFULLSCREEN : DWORD = 0x00000020;
921+
pub static STARTF_TITLEISAPPID : DWORD = 0x00001000;
922+
pub static STARTF_TITLEISLINKNAME : DWORD = 0x00000800;
923+
pub static STARTF_USECOUNTCHARS : DWORD = 0x00000008;
924+
pub static STARTF_USEFILLATTRIBUTE : DWORD = 0x00000010;
925+
pub static STARTF_USEHOTKEY : DWORD = 0x00000200;
926+
pub static STARTF_USEPOSITION : DWORD = 0x00000004;
927+
pub static STARTF_USESHOWWINDOW : DWORD = 0x00000001;
928+
pub static STARTF_USESIZE : DWORD = 0x00000002;
929+
pub static STARTF_USESTDHANDLES : DWORD = 0x00000100;
930+
931+
pub static WAIT_ABANDONED : DWORD = 0x00000080;
932+
pub static WAIT_OBJECT_0 : DWORD = 0x00000000;
933+
pub static WAIT_TIMEOUT : DWORD = 0x00000102;
934+
pub static WAIT_FAILED : DWORD = -1;
935+
936+
pub static DUPLICATE_CLOSE_SOURCE : DWORD = 0x00000001;
937+
pub static DUPLICATE_SAME_ACCESS : DWORD = 0x00000002;
938+
939+
pub static INFINITE : DWORD = -1;
940+
pub static STILL_ACTIVE : DWORD = 259;
858941
}
859942
}
860943

@@ -1751,12 +1834,24 @@ pub mod funcs {
17511834

17521835
unsafe fn sysctlnametomib(name: *c_char, mibp: *mut c_int,
17531836
sizep: *mut size_t) -> c_int;
1837+
1838+
unsafe fn getdtablesize() -> c_int;
17541839
}
17551840
}
17561841

17571842

17581843
#[cfg(target_os = "linux")]
17591844
#[cfg(target_os = "android")]
1845+
pub mod bsd44 {
1846+
use libc::types::os::arch::c95::{c_int};
1847+
1848+
#[abi = "cdecl"]
1849+
pub extern {
1850+
unsafe fn getdtablesize() -> c_int;
1851+
}
1852+
}
1853+
1854+
17601855
#[cfg(target_os = "win32")]
17611856
pub mod bsd44 {
17621857
}
@@ -1790,9 +1885,11 @@ pub mod funcs {
17901885
pub mod kernel32 {
17911886
use libc::types::os::arch::c95::{c_uint};
17921887
use libc::types::os::arch::extra::{BOOL, DWORD, HMODULE};
1793-
use libc::types::os::arch::extra::{LPCWSTR, LPWSTR, LPTCH};
1794-
use libc::types::os::arch::extra::{LPSECURITY_ATTRIBUTES};
1795-
use libc::types::os::arch::extra::{HANDLE};
1888+
use libc::types::os::arch::extra::{LPCWSTR, LPWSTR, LPCTSTR,
1889+
LPTSTR, LPTCH, LPDWORD, LPVOID};
1890+
use libc::types::os::arch::extra::{LPSECURITY_ATTRIBUTES, LPSTARTUPINFO,
1891+
LPPROCESS_INFORMATION};
1892+
use libc::types::os::arch::extra::{HANDLE, LPHANDLE};
17961893

17971894
#[abi = "stdcall"]
17981895
pub extern "stdcall" {
@@ -1829,19 +1926,45 @@ pub mod funcs {
18291926
findFileData: HANDLE)
18301927
-> BOOL;
18311928
unsafe fn FindClose(findFile: HANDLE) -> BOOL;
1929+
unsafe fn DuplicateHandle(hSourceProcessHandle: HANDLE,
1930+
hSourceHandle: HANDLE,
1931+
hTargetProcessHandle: HANDLE,
1932+
lpTargetHandle: LPHANDLE,
1933+
dwDesiredAccess: DWORD,
1934+
bInheritHandle: BOOL,
1935+
dwOptions: DWORD) -> BOOL;
18321936
unsafe fn CloseHandle(hObject: HANDLE) -> BOOL;
1937+
unsafe fn OpenProcess(dwDesiredAccess: DWORD,
1938+
bInheritHandle: BOOL,
1939+
dwProcessId: DWORD) -> HANDLE;
1940+
unsafe fn GetCurrentProcess() -> HANDLE;
1941+
unsafe fn CreateProcessA(lpApplicationName: LPCTSTR,
1942+
lpCommandLine: LPTSTR,
1943+
lpProcessAttributes: LPSECURITY_ATTRIBUTES,
1944+
lpThreadAttributes: LPSECURITY_ATTRIBUTES,
1945+
bInheritHandles: BOOL,
1946+
dwCreationFlags: DWORD,
1947+
lpEnvironment: LPVOID,
1948+
lpCurrentDirectory: LPCTSTR,
1949+
lpStartupInfo: LPSTARTUPINFO,
1950+
lpProcessInformation: LPPROCESS_INFORMATION) -> BOOL;
1951+
unsafe fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD;
18331952
unsafe fn TerminateProcess(hProcess: HANDLE, uExitCode: c_uint) -> BOOL;
1953+
unsafe fn GetExitCodeProcess(hProcess: HANDLE, lpExitCode: LPDWORD) -> BOOL;
18341954
}
18351955
}
18361956

18371957
pub mod msvcrt {
1838-
use libc::types::os::arch::c95::c_int;
1958+
use libc::types::os::arch::c95::{c_int, c_long};
18391959

18401960
#[abi = "cdecl"]
18411961
#[nolink]
18421962
pub extern {
18431963
#[link_name = "_commit"]
18441964
unsafe fn commit(fd: c_int) -> c_int;
1965+
1966+
#[link_name = "_get_osfhandle"]
1967+
unsafe fn get_osfhandle(fd: c_int) -> c_long;
18451968
}
18461969
}
18471970
}

branches/dist-snap/src/libcore/os.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ pub fn pipe() -> Pipe {
373373
// inheritance has to be handled in a different way that I do not
374374
// fully understand. Here we explicitly make the pipe non-inheritable,
375375
// which means to pass it to a subprocess they need to be duplicated
376-
// first, as in rust_run_program.
376+
// first, as in core::run.
377377
let mut fds = Pipe {in: 0 as c_int,
378378
out: 0 as c_int };
379379
let res = libc::pipe(&mut fds.in, 1024 as ::libc::c_uint,

branches/dist-snap/src/libcore/repr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ pub fn write_repr<T>(writer: @Writer, object: &T) {
673673
}
674674
}
675675
676-
#[test]
676+
#[cfg(test)]
677677
struct P {a: int, b: float}
678678
679679
#[test]

0 commit comments

Comments
 (0)