Skip to content

Commit e79cf25

Browse files
committed
---
yaml --- r: 98231 b: refs/heads/master c: 7d79cc7 h: refs/heads/master i: 98229: a9d923d 98227: 2afb72a 98223: ca8df2d v: v3
1 parent 4120e1e commit e79cf25

File tree

6 files changed

+66
-19
lines changed

6 files changed

+66
-19
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 68517a2cca613d2018819d0eb38f6c0a864d1836
2+
refs/heads/master: 7d79cc73fb4c0fcbdf8bb47a3c96ae9dadbd1895
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: b6400f998497c3958f40997a71756ead344a776d
55
refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36

trunk/doc/tutorial.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,10 +1020,15 @@ being destroyed along with the owner. Since the `list` variable above is
10201020
immutable, the whole list is immutable. The memory allocation itself is the
10211021
box, while the owner holds onto a pointer to it:
10221022

1023-
Cons cell Cons cell Cons cell
1024-
+-----------+ +-----+-----+ +-----+-----+
1025-
| 1 | ~ | -> | 2 | ~ | -> | 3 | ~ | -> Nil
1026-
+-----------+ +-----+-----+ +-----+-----+
1023+
List box List box List box List box
1024+
+--------------+ +--------------+ +--------------+ +--------------+
1025+
list -> | Cons | 1 | ~ | -> | Cons | 2 | ~ | -> | Cons | 3 | ~ | -> | Nil |
1026+
+--------------+ +--------------+ +--------------+ +--------------+
1027+
1028+
> Note: the above diagram shows the logical contents of the enum. The actual
1029+
> memory layout of the enum may vary. For example, for the `List` enum shown
1030+
> above, Rust guarantees that there will be no enum tag field in the actual
1031+
> structure. See the language reference for more details.
10271032
10281033
An owned box is a common example of a type with a destructor. The allocated
10291034
memory is cleaned up when the box is destroyed.

trunk/src/etc/vim/syntax/rust.vim

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
" Maintainer: Patrick Walton <[email protected]>
44
" Maintainer: Ben Blum <[email protected]>
55
" Maintainer: Chris Morgan <[email protected]>
6-
" Last Change: 2013 Dec 10
6+
" Last Change: 2014 Jan 4
77

88
if version < 600
99
syntax clear
@@ -147,8 +147,8 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
147147
syn match rustSpecialError display contained /\\./
148148
syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
149149
syn match rustStringContinuation display contained /\\\n\s*/
150-
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation
151-
syn region rustString start='r\z(#*\)"' end='"\z1'
150+
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation,@Spell
151+
syn region rustString start='r\z(#*\)"' end='"\z1' contains=@Spell
152152

153153
syn region rustAttribute start="#\[" end="\]" contains=rustString,rustDeriving
154154
syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait
@@ -179,10 +179,10 @@ syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit
179179
syn match rustCharacter /'\([^'\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial,rustSpecialError
180180

181181
syn cluster rustComment contains=rustCommentLine,rustCommentLineDoc,rustCommentBlock,rustCommentBlockDoc
182-
syn region rustCommentLine start="//" end="$" contains=rustTodo
183-
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo
184-
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment keepend extend
185-
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment keepend extend
182+
syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
183+
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
184+
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment,@Spell keepend extend
185+
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment,@Spell keepend extend
186186
" FIXME: this is a really ugly and not fully correct implementation. Most
187187
" importantly, a case like ``/* */*`` should have the final ``*`` not being in
188188
" a comment, but in practice at present it leaves comments open two levels

trunk/src/libextra/bitv.rs

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -269,14 +269,23 @@ impl Bitv {
269269

270270
impl Bitv {
271271
pub fn new(nbits: uint, init: bool) -> Bitv {
272-
let rep = if nbits <= uint::bits {
272+
let rep = if nbits < uint::bits {
273+
Small(SmallBitv::new(if init {(1<<nbits)-1} else {0}))
274+
} else if nbits == uint::bits {
273275
Small(SmallBitv::new(if init {!0} else {0}))
274-
}
275-
else {
276-
let nelems = nbits/uint::bits +
277-
if nbits % uint::bits == 0 {0} else {1};
278-
let elem = if init {!0u} else {0u};
279-
let s = vec::from_elem(nelems, elem);
276+
} else {
277+
let exact = nbits % uint::bits == 0;
278+
let nelems = nbits/uint::bits + if exact {0} else {1};
279+
let s =
280+
if init {
281+
if exact {
282+
vec::from_elem(nelems, !0u)
283+
} else {
284+
let mut v = vec::from_elem(nelems-1, !0u);
285+
v.push((1<<nbits % uint::bits)-1);
286+
v
287+
}
288+
} else { vec::from_elem(nelems, 0u)};
280289
Big(BigBitv::new(s))
281290
};
282291
Bitv {rep: rep, nbits: nbits}
@@ -1329,6 +1338,20 @@ mod tests {
13291338
assert_eq!(idxs, ~[0, 2, 3]);
13301339
}
13311340
1341+
#[test]
1342+
fn test_bitv_set_frombitv_init() {
1343+
let bools = [true, false];
1344+
let lengths = [10, 64, 100];
1345+
for &b in bools.iter() {
1346+
for &l in lengths.iter() {
1347+
let bitset = BitvSet::from_bitv(Bitv::new(l, b));
1348+
assert_eq!(bitset.contains(&1u), b)
1349+
assert_eq!(bitset.contains(&(l-1u)), b)
1350+
assert!(!bitset.contains(&l))
1351+
}
1352+
}
1353+
}
1354+
13321355
#[test]
13331356
fn test_small_difference() {
13341357
let mut b1 = Bitv::new(3, false);

trunk/src/librustc/front/feature_gate.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ static KNOWN_FEATURES: &'static [(&'static str, Status)] = &[
4545
("link_args", Active),
4646
("phase", Active),
4747
("macro_registrar", Active),
48+
("log_syntax", Active),
4849

4950
// These are used to test this portion of the compiler, they don't actually
5051
// mean anything
@@ -187,6 +188,11 @@ impl Visitor<()> for Context {
187188
self.gate_feature("asm", path.span, "inline assembly is not \
188189
stable enough for use and is subject to change");
189190
}
191+
192+
else if path.segments.last().identifier == self.sess.ident_of("log_syntax") {
193+
self.gate_feature("log_syntax", path.span, "`log_syntax!` is not \
194+
stable enough for use and is subject to change");
195+
}
190196
}
191197

192198
fn visit_ty(&mut self, t: &ast::Ty, _: ()) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
fn main() {
12+
log_syntax!() //~ ERROR `log_syntax!` is not stable enough
13+
}

0 commit comments

Comments
 (0)