Skip to content

Commit 8c11194

Browse files
committed
---
yaml --- r: 80403 b: refs/heads/snap-stage3 c: 2562f48 h: refs/heads/master i: 80401: 8cf48fd 80399: bab8273 v: v3
1 parent af5d750 commit 8c11194

File tree

17 files changed

+2169
-15
lines changed

17 files changed

+2169
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 3e1803f3af1adc1b2e5595650f6920f40bbedc2e
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 2017cc3ce45a4c1827c5ccee400199bca8f22594
4+
refs/heads/snap-stage3: 2562f480f53fd3d15822034d441441ffbd04dbe4
55
refs/heads/try: 71bebebc37fbb229877da88dde13c2f35913bd77
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/Makefile.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ CFG_LIBRUSTC_$(1) :=$(call CFG_LIB_NAME_$(1),rustc)
214214
CFG_LIBSYNTAX_$(1) :=$(call CFG_LIB_NAME_$(1),syntax)
215215
CFG_LIBRUSTPKG_$(1) :=$(call CFG_LIB_NAME_$(1),rustpkg)
216216
CFG_LIBRUSTDOC_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc)
217+
CFG_LIBRUSTDOCNG_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc_ng)
217218
CFG_LIBRUSTI_$(1) :=$(call CFG_LIB_NAME_$(1),rusti)
218219
CFG_LIBRUST_$(1) :=$(call CFG_LIB_NAME_$(1),rust)
219220

@@ -223,6 +224,7 @@ LIBRUSTC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustc)
223224
LIBSYNTAX_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),syntax)
224225
LIBRUSTPKG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustpkg)
225226
LIBRUSTDOC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc)
227+
LIBRUSTDOCNG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc_ng)
226228
LIBRUSTI_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rusti)
227229
LIBRUST_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rust)
228230
EXTRALIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),extra)
@@ -231,6 +233,7 @@ LIBRUSTC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustc)
231233
LIBSYNTAX_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),syntax)
232234
LIBRUSTPKG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustpkg)
233235
LIBRUSTDOC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc)
236+
LIBRUSTDOCNG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc_ng)
234237
LIBRUSTI_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rusti)
235238
LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust)
236239

@@ -443,6 +446,7 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
443446
$$(HBIN$(1)_H_$(3))/rust$$(X_$(3)) \
444447
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \
445448
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \
449+
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(3)) \
446450
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \
447451
$$(HLIB$(1)_H_$(3))/$(CFG_LIBRUST_$(3)) \
448452
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
@@ -451,6 +455,7 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
451455
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) \
452456
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) \
453457
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) \
458+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(2)) \
454459
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(2)) \
455460
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(2))
456461

branches/snap-stage3/mk/clean.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ clean$(1)_H_$(2):
7272
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X_$(2))
7373
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG_$(2))
7474
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC_$(2))
75+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOCNG_$(2))
7576
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME_$(2))
7677
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2))
7778
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_EXTRALIB_$(2))
@@ -85,6 +86,7 @@ clean$(1)_H_$(2):
8586
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2))
8687
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2))
8788
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB_$(2))
89+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOCNG_GLOB_$(2))
8890
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB_$(2))
8991
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB_$(2))
9092
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM_$(2))
@@ -107,6 +109,7 @@ clean$(1)_T_$(2)_H_$(3):
107109
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rust$(X_$(2))
108110
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2))
109111
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2))
112+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(2))
110113
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2))
111114
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
112115
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))
@@ -120,6 +123,7 @@ clean$(1)_T_$(2)_H_$(3):
120123
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2))
121124
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2))
122125
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB_$(2))
126+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOCNG_GLOB_$(2))
123127
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTI_GLOB_$(2))
124128
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUST_GLOB_$(2))
125129
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2))

branches/snap-stage3/mk/install.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2))
104104
$$(Q)$$(call INSTALL_LIB,$$(LIBSYNTAX_GLOB_$(1)))
105105
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTPKG_GLOB_$(1)))
106106
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTDOC_GLOB_$(1)))
107+
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTDOCNG_GLOB_$(1)))
107108
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTI_GLOB_$(1)))
108109
$$(Q)$$(call INSTALL_LIB,$$(LIBRUST_GLOB_$(1)))
109110
$$(Q)$$(call INSTALL_LIB,libmorestack.a)
@@ -149,6 +150,7 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE))
149150
$(Q)$(call INSTALL_LIB,$(LIBRUST_GLOB_$(CFG_BUILD_TRIPLE)))
150151
$(Q)$(call INSTALL_LIB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD_TRIPLE)))
151152
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOC_GLOB_$(CFG_BUILD_TRIPLE)))
153+
$(Q)$(call INSTALL_LIB,$(LIBRUSTDOCNG_GLOB_$(CFG_BUILD_TRIPLE)))
152154
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)))
153155
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)))
154156
$(Q)$(call INSTALL,$(S)/man, $(PREFIX_ROOT)/share/man/man1,rust.1)

branches/snap-stage3/mk/tools.mk

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ RUSTPKG_INPUTS := $(wildcard $(S)src/librustpkg/*.rs)
2323
RUSTDOC_LIB := $(S)src/librustdoc/rustdoc.rs
2424
RUSTDOC_INPUTS := $(wildcard $(S)src/librustdoc/*.rs)
2525

26+
# rustdoc_ng, the next generation documentation tool
27+
28+
RUSTDOCNG_LIB := $(S)src/rustdoc_ng/lib.rs
29+
RUSTDOCNG_INPUTS := $(wildcard $(S)src/rustdoc_ng/*.rs)
30+
2631
# Rusti, the JIT REPL
2732
RUSTI_LIB := $(S)src/librusti/rusti.rs
2833
RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs)
@@ -78,6 +83,24 @@ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \
7883
@$$(call E, compile_and_link: $$@)
7984
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<
8085

86+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)): \
87+
$$(RUSTDOCNG_LIB) $$(RUSTDOCNG_INPUTS) \
88+
$$(SREQ$(1)_T_$(4)_H_$(3)) \
89+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
90+
| $$(TLIB$(1)_T_$(4)_H_$(3))/
91+
@$$(call E, compile_and_link: $$@)
92+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
93+
$$(STAGE$(1)_T_$(4)_H_$(3)) --out-dir $$(@D) $$< && touch $$@
94+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
95+
96+
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc_ng$$(X_$(4)): \
97+
$$(DRIVER_CRATE) \
98+
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
99+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
100+
| $$(TBIN$(1)_T_$(4)_H_$(3))/
101+
@$$(call E, compile_and_link: $$@)
102+
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc_ng -o $$@ $$<
103+
81104
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)): \
82105
$$(RUSTI_LIB) $$(RUSTI_INPUTS) \
83106
$$(SREQ$(1)_T_$(4)_H_$(3)) \
@@ -102,6 +125,7 @@ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \
102125
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \
103126
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
104127
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \
128+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
105129
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
106130
| $$(TLIB$(1)_T_$(4)_H_$(3))/
107131
@$$(call E, compile_and_link: $$@)
@@ -171,6 +195,19 @@ $$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)): \
171195
@$$(call E, cp: $$@)
172196
$$(Q)cp $$< $$@
173197

198+
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOCNG_$(4)): \
199+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOCNG_$(4)) \
200+
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \
201+
$$(HSREQ$(2)_H_$(4)) \
202+
| $$(HLIB$(2)_H_$(4))/
203+
@$$(call E, cp: $$@)
204+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
205+
$$(Q)cp $$< $$@
206+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTDOCNG_GLOB_$(4)),$$(notdir $$@))
207+
$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOCNG_GLOB_$(4)) \
208+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOCNG_DSYM_GLOB_$(4))) \
209+
$$(HLIB$(2)_H_$(4))
210+
174211
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \
175212
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \
176213
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \

branches/snap-stage3/src/libstd/c_str.rs

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use ops::Drop;
1515
use option::{Option, Some, None};
1616
use ptr::RawPtr;
1717
use ptr;
18+
use str;
1819
use str::StrSlice;
1920
use vec::{ImmutableVector, CopyableVector};
2021
use container::Container;
@@ -97,15 +98,25 @@ impl CString {
9798
/// # Failure
9899
///
99100
/// Fails if the CString is null.
101+
#[inline]
100102
pub fn as_bytes<'a>(&'a self) -> &'a [u8] {
101-
#[fixed_stack_segment]; #[inline(never)];
102103
if self.buf.is_null() { fail!("CString is null!"); }
103104
unsafe {
104-
let len = libc::strlen(self.buf) as uint;
105+
let len = ptr::position(self.buf, |c| *c == 0);
105106
cast::transmute((self.buf, len + 1))
106107
}
107108
}
108109

110+
/// Converts the CString into a `&str` without copying.
111+
/// Returns None if the CString is not UTF-8 or is null.
112+
#[inline]
113+
pub fn as_str<'a>(&'a self) -> Option<&'a str> {
114+
if self.buf.is_null() { return None; }
115+
let buf = self.as_bytes();
116+
let buf = buf.slice_to(buf.len()-1); // chop off the trailing NUL
117+
str::from_utf8_slice_opt(buf)
118+
}
119+
109120
/// Return a CString iterator.
110121
pub fn iter<'a>(&'a self) -> CStringIterator<'a> {
111122
CStringIterator {
@@ -238,7 +249,7 @@ mod tests {
238249
use option::{Some, None};
239250

240251
#[test]
241-
fn test_to_c_str() {
252+
fn test_str_to_c_str() {
242253
do "".to_c_str().with_ref |buf| {
243254
unsafe {
244255
assert_eq!(*ptr::offset(buf, 0), 0);
@@ -257,6 +268,37 @@ mod tests {
257268
}
258269
}
259270

271+
#[test]
272+
fn test_vec_to_c_str() {
273+
let b: &[u8] = [];
274+
do b.to_c_str().with_ref |buf| {
275+
unsafe {
276+
assert_eq!(*ptr::offset(buf, 0), 0);
277+
}
278+
}
279+
280+
do bytes!("hello").to_c_str().with_ref |buf| {
281+
unsafe {
282+
assert_eq!(*ptr::offset(buf, 0), 'h' as libc::c_char);
283+
assert_eq!(*ptr::offset(buf, 1), 'e' as libc::c_char);
284+
assert_eq!(*ptr::offset(buf, 2), 'l' as libc::c_char);
285+
assert_eq!(*ptr::offset(buf, 3), 'l' as libc::c_char);
286+
assert_eq!(*ptr::offset(buf, 4), 'o' as libc::c_char);
287+
assert_eq!(*ptr::offset(buf, 5), 0);
288+
}
289+
}
290+
291+
do bytes!("foo", 0xff).to_c_str().with_ref |buf| {
292+
unsafe {
293+
assert_eq!(*ptr::offset(buf, 0), 'f' as libc::c_char);
294+
assert_eq!(*ptr::offset(buf, 1), 'o' as libc::c_char);
295+
assert_eq!(*ptr::offset(buf, 2), 'o' as libc::c_char);
296+
assert_eq!(*ptr::offset(buf, 3), 0xff);
297+
assert_eq!(*ptr::offset(buf, 4), 0);
298+
}
299+
}
300+
}
301+
260302
#[test]
261303
fn test_is_null() {
262304
let c_str = unsafe { CString::new(ptr::null(), false) };
@@ -349,4 +391,33 @@ mod tests {
349391
}
350392
}
351393
}
394+
395+
#[test]
396+
fn test_as_bytes() {
397+
let c_str = "hello".to_c_str();
398+
assert_eq!(c_str.as_bytes(), bytes!("hello", 0));
399+
let c_str = "".to_c_str();
400+
assert_eq!(c_str.as_bytes(), bytes!(0));
401+
let c_str = bytes!("foo", 0xff).to_c_str();
402+
assert_eq!(c_str.as_bytes(), bytes!("foo", 0xff, 0));
403+
}
404+
405+
#[test]
406+
#[should_fail]
407+
fn test_as_bytes_fail() {
408+
let c_str = unsafe { CString::new(ptr::null(), false) };
409+
c_str.as_bytes();
410+
}
411+
412+
#[test]
413+
fn test_as_str() {
414+
let c_str = "hello".to_c_str();
415+
assert_eq!(c_str.as_str(), Some("hello"));
416+
let c_str = "".to_c_str();
417+
assert_eq!(c_str.as_str(), Some(""));
418+
let c_str = bytes!("foo", 0xff).to_c_str();
419+
assert_eq!(c_str.as_str(), None);
420+
let c_str = unsafe { CString::new(ptr::null(), false) };
421+
assert_eq!(c_str.as_str(), None);
422+
}
352423
}

branches/snap-stage3/src/libstd/num/uint.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,17 +101,7 @@ pub fn next_power_of_two(n: uint) -> uint {
101101
let mut tmp: uint = n - 1u;
102102
let mut shift: uint = 1u;
103103
while shift <= halfbits { tmp |= tmp >> shift; shift <<= 1u; }
104-
tmp + 1u
105-
}
106-
107-
/// Returns the smallest power of 2 greater than or equal to `n`
108-
#[inline]
109-
pub fn next_power_of_two_opt(n: uint) -> Option<uint> {
110-
let halfbits: uint = sys::size_of::<uint>() * 4u;
111-
let mut tmp: uint = n - 1u;
112-
let mut shift: uint = 1u;
113-
while shift <= halfbits { tmp |= tmp >> shift; shift <<= 1u; }
114-
tmp.checked_add(&1)
104+
return tmp + 1u;
115105
}
116106

117107
#[cfg(target_word_size = "32")]
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.swp
2+
main

0 commit comments

Comments
 (0)