Skip to content

Commit 73abcaf

Browse files
committed
---
yaml --- r: 188386 b: refs/heads/auto c: 8a60b91 h: refs/heads/master v: v3
1 parent 4d7a210 commit 73abcaf

File tree

22 files changed

+385
-557
lines changed

22 files changed

+385
-557
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1010
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1111
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1212
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
13-
refs/heads/auto: 37d237b1dd1bf4effdb027d4e7ab25d7347c8d7c
13+
refs/heads/auto: 8a60b91f9264e64a6b58253ab80147dd9f55bcd9
1414
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1515
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1616
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/mk/tests.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \
590590

591591
# The tests select when to use debug configuration on their own;
592592
# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898).
593-
CTEST_RUSTC_FLAGS := $$(subst -C debug-assertions,,$$(CFG_RUSTC_FLAGS))
593+
CTEST_RUSTC_FLAGS := $$(subst --cfg ndebug,,$$(CFG_RUSTC_FLAGS))
594594

595595
# The tests cannot be optimized while the rest of the compiler is optimized, so
596596
# filter out the optimization (if any) from rustc and then figure out if we need

branches/auto/src/etc/tidy.py

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import subprocess
1414
import re
1515
import os
16-
from licenseck import check_license
16+
from licenseck import *
1717
import snapshot
1818

1919
err = 0
@@ -22,8 +22,13 @@
2222
tab_flag = "ignore-tidy-tab"
2323
linelength_flag = "ignore-tidy-linelength"
2424

25-
interesting_files = ['.rs', '.py', '.js', '.sh', '.c', '.h']
26-
uninteresting_files = ['miniz.c', 'jquery', 'rust_android_dummy']
25+
# Be careful to support Python 2.4, 2.6, and 3.x here!
26+
config_proc = subprocess.Popen(["git", "config", "core.autocrlf"],
27+
stdout=subprocess.PIPE)
28+
result = config_proc.communicate()[0]
29+
30+
true = "true".encode('utf8')
31+
autocrlf = result.strip() == true if result is not None else False
2732

2833

2934
def report_error_name_no(name, no, s):
@@ -46,34 +51,6 @@ def do_license_check(name, contents):
4651
if not check_license(name, contents):
4752
report_error_name_no(name, 1, "incorrect license")
4853

49-
50-
def update_counts(current_name):
51-
global file_counts
52-
global count_other_linted_files
53-
54-
_, ext = os.path.splitext(current_name)
55-
56-
if ext in interesting_files:
57-
file_counts[ext] += 1
58-
else:
59-
count_other_linted_files += 1
60-
61-
62-
def interesting_file(f):
63-
if any(x in f for x in uninteresting_files):
64-
return False
65-
66-
return any(os.path.splitext(f)[1] == ext for ext in interesting_files)
67-
68-
69-
# Be careful to support Python 2.4, 2.6, and 3.x here!
70-
config_proc = subprocess.Popen(["git", "config", "core.autocrlf"],
71-
stdout=subprocess.PIPE)
72-
result = config_proc.communicate()[0]
73-
74-
true = "true".encode('utf8')
75-
autocrlf = result.strip() == true if result is not None else False
76-
7754
current_name = ""
7855
current_contents = ""
7956
check_tab = True
@@ -86,16 +63,28 @@ def interesting_file(f):
8663

8764
src_dir = sys.argv[1]
8865

89-
count_lines = 0
90-
count_non_blank_lines = 0
91-
count_other_linted_files = 0
66+
try:
67+
count_lines = 0
68+
count_non_blank_lines = 0
9269

93-
file_counts = {ext: 0 for ext in interesting_files}
70+
interesting_files = ['.rs', '.py', '.js', '.sh', '.c', '.h']
9471

95-
all_paths = set()
72+
file_counts = {ext: 0 for ext in interesting_files}
73+
file_counts['other'] = 0
74+
75+
def update_counts(current_name):
76+
global file_counts
77+
_, ext = os.path.splitext(current_name)
78+
79+
if ext in file_counts:
80+
file_counts[ext] += 1
81+
else:
82+
file_counts['other'] += 1
83+
84+
all_paths = set()
9685

97-
try:
9886
for (dirpath, dirnames, filenames) in os.walk(src_dir):
87+
9988
# Skip some third-party directories
10089
skippable_dirs = {
10190
'src/jemalloc',
@@ -114,6 +103,14 @@ def interesting_file(f):
114103
if any(d in dirpath for d in skippable_dirs):
115104
continue
116105

106+
def interesting_file(f):
107+
if "miniz.c" in f \
108+
or "jquery" in f \
109+
or "rust_android_dummy" in f:
110+
return False
111+
112+
return any(os.path.splitext(f)[1] == ext for ext in interesting_files)
113+
117114
file_names = [os.path.join(dirpath, f) for f in filenames
118115
if interesting_file(f)
119116
and not f.endswith("_gen.rs")
@@ -199,11 +196,10 @@ def interesting_file(f):
199196
report_err("UTF-8 decoding error " + str(e))
200197

201198
print
202-
for ext in sorted(file_counts, key=file_counts.get, reverse=True):
203-
print "* linted {} {} files".format(file_counts[ext], ext)
204-
print "* linted {} other files".format(count_other_linted_files)
205-
print "* total lines of code: {}".format(count_lines)
206-
print "* total non-blank lines of code: {}".format(count_non_blank_lines)
199+
for ext in file_counts:
200+
print "* linted " + str(file_counts[ext]) + " " + ext + " files"
201+
print "* total lines of code: " + str(count_lines)
202+
print "* total non-blank lines of code: " + str(count_non_blank_lines)
207203
print
208204

209205
sys.exit(err)

branches/auto/src/etc/unicode.py

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ def fetch(f):
8484
sys.stderr.write("cannot load %s" % f)
8585
exit(1)
8686

87-
def is_surrogate(n):
88-
return 0xD800 <= n <= 0xDFFF
87+
def is_valid_unicode(n):
88+
return 0 <= n <= 0xD7FF or 0xE000 <= n <= 0x10FFFF
8989

9090
def load_unicode_data(f):
9191
fetch(f)
@@ -96,28 +96,19 @@ def load_unicode_data(f):
9696
canon_decomp = {}
9797
compat_decomp = {}
9898

99-
udict = {};
100-
range_start = -1;
10199
for line in fileinput.input(f):
102-
data = line.split(';');
103-
if len(data) != 15:
100+
fields = line.split(";")
101+
if len(fields) != 15:
104102
continue
105-
cp = int(data[0], 16);
106-
if is_surrogate(cp):
107-
continue
108-
if range_start >= 0:
109-
for i in xrange(range_start, cp):
110-
udict[i] = data;
111-
range_start = -1;
112-
if data[1].endswith(", First>"):
113-
range_start = cp;
114-
continue;
115-
udict[cp] = data;
116-
117-
for code in udict:
118-
[code_org, name, gencat, combine, bidi,
103+
[code, name, gencat, combine, bidi,
119104
decomp, deci, digit, num, mirror,
120-
old, iso, upcase, lowcase, titlecase ] = udict[code];
105+
old, iso, upcase, lowcase, titlecase ] = fields
106+
107+
code_org = code
108+
code = int(code, 16)
109+
110+
if not is_valid_unicode(code):
111+
continue
121112

122113
# generate char to char direct common and simple conversions
123114
# uppercase to lowercase

branches/auto/src/grammar/parser-lalr.y

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,6 @@ extern char *yytext;
152152
%precedence MOD_SEP
153153
%precedence RARROW ':'
154154
155-
// In where clauses, "for" should have greater precedence when used as
156-
// a higher ranked constraint than when used as the beginning of a
157-
// for_in_type (which is a ty)
158-
%precedence FORTYPE
159-
%precedence FOR
160-
161155
// Binops & unops, and their precedences
162156
%precedence BOX
163157
%precedence BOXPLACE
@@ -588,14 +582,6 @@ item_impl
588582
{
589583
$$ = mk_node("ItemImplNeg", 7, $1, $3, $5, $7, $8, $10, $11);
590584
}
591-
| maybe_unsafe IMPL generic_params trait_ref FOR DOTDOT '{' '}'
592-
{
593-
$$ = mk_node("ItemImplDefault", 3, $1, $3, $4);
594-
}
595-
| maybe_unsafe IMPL generic_params '!' trait_ref FOR DOTDOT '{' '}'
596-
{
597-
$$ = mk_node("ItemImplDefaultNeg", 3, $1, $3, $4);
598-
}
599585
;
600586

601587
maybe_impl_items
@@ -783,14 +769,10 @@ where_predicates
783769
;
784770

785771
where_predicate
786-
: maybe_for_lifetimes lifetime ':' bounds { $$ = mk_node("WherePredicate", 3, $1, $2, $4); }
787-
| maybe_for_lifetimes ty ':' ty_param_bounds { $$ = mk_node("WherePredicate", 3, $1, $2, $4); }
772+
: lifetime ':' bounds { $$ = mk_node("WherePredicate", 2, $1, $3); }
773+
| ty ':' ty_param_bounds { $$ = mk_node("WherePredicate", 2, $1, $3); }
788774
;
789775

790-
maybe_for_lifetimes
791-
: FOR '<' lifetimes '>' { $$ = mk_none(); }
792-
| %prec FORTYPE %empty { $$ = mk_none(); }
793-
794776
ty_params
795777
: ty_param { $$ = mk_node("TyParams", 1, $1); }
796778
| ty_params ',' ty_param { $$ = ext_node($1, 1, $3); }
@@ -1042,8 +1024,7 @@ ty_qualified_path_and_generic_values
10421024
}
10431025
| ty_qualified_path ',' ty_sums maybe_bindings
10441026
{
1045-
$$ = mk_node("GenericValues", 3, mk_none(), mk_node("TySums", 2, $1, $3), $4);
1046-
}
1027+
$$ = mk_node("GenericValues", 3, mk_none(), ext_node(mk_node("TySums", 1, $1), 1, $3), $4); }
10471028
;
10481029

10491030
ty_qualified_path
@@ -1532,35 +1513,31 @@ nonblock_prefix_expr
15321513
;
15331514

15341515
expr_qualified_path
1535-
: '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident
1516+
: '<' ty_sum AS trait_ref '>' MOD_SEP ident
15361517
{
1537-
$$ = mk_node("ExprQualifiedPath", 3, $2, $3, $6);
1518+
$$ = mk_node("ExprQualifiedPath", 3, $2, $4, $7);
15381519
}
1539-
| '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident generic_args
1520+
| '<' ty_sum AS trait_ref '>' MOD_SEP ident generic_args
15401521
{
1541-
$$ = mk_node("ExprQualifiedPath", 4, $2, $3, $6, $7);
1522+
$$ = mk_node("ExprQualifiedPath", 4, $2, $4, $7, $8);
15421523
}
1543-
| SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident maybe_as_trait_ref '>' MOD_SEP ident
1524+
| SHL ty_sum AS trait_ref '>' MOD_SEP ident AS trait_ref '>' MOD_SEP ident
15441525
{
1545-
$$ = mk_node("ExprQualifiedPath", 3, mk_node("ExprQualifiedPath", 3, $2, $3, $6), $7, $10);
1526+
$$ = mk_node("ExprQualifiedPath", 3, mk_node("ExprQualifiedPath", 3, $2, $4, $7), $9, $12);
15461527
}
1547-
| SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident generic_args maybe_as_trait_ref '>' MOD_SEP ident
1528+
| SHL ty_sum AS trait_ref '>' MOD_SEP ident generic_args AS trait_ref '>' MOD_SEP ident
15481529
{
1549-
$$ = mk_node("ExprQualifiedPath", 3, mk_node("ExprQualifiedPath", 4, $2, $3, $6, $7), $8, $11);
1530+
$$ = mk_node("ExprQualifiedPath", 3, mk_node("ExprQualifiedPath", 4, $2, $4, $7, $8), $10, $13);
15501531
}
1551-
| SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident maybe_as_trait_ref '>' MOD_SEP ident generic_args
1532+
| SHL ty_sum AS trait_ref '>' MOD_SEP ident AS trait_ref '>' MOD_SEP ident generic_args
15521533
{
1553-
$$ = mk_node("ExprQualifiedPath", 4, mk_node("ExprQualifiedPath", 3, $2, $3, $6), $7, $10, $11);
1534+
$$ = mk_node("ExprQualifiedPath", 4, mk_node("ExprQualifiedPath", 3, $2, $4, $7), $9, $12, $13);
15541535
}
1555-
| SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident generic_args maybe_as_trait_ref '>' MOD_SEP ident generic_args
1536+
| SHL ty_sum AS trait_ref '>' MOD_SEP ident generic_args AS trait_ref '>' MOD_SEP ident generic_args
15561537
{
1557-
$$ = mk_node("ExprQualifiedPath", 4, mk_node("ExprQualifiedPath", 4, $2, $3, $6, $7), $8, $11, $12);
1538+
$$ = mk_node("ExprQualifiedPath", 4, mk_node("ExprQualifiedPath", 4, $2, $4, $7, $8), $10, $13, $14);
15581539
}
15591540

1560-
maybe_as_trait_ref
1561-
: AS trait_ref { $$ = $2; }
1562-
| %empty { $$ = mk_none(); }
1563-
;
15641541

15651542
lambda_expr
15661543
: %prec LAMBDA

branches/auto/src/libcore/iter.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1570,13 +1570,24 @@ pub struct Map<I, F> {
15701570
f: F,
15711571
}
15721572

1573+
impl<I: Iterator, F, B> Map<I, F> where F: FnMut(I::Item) -> B {
1574+
#[inline]
1575+
fn do_map(&mut self, elt: Option<I::Item>) -> Option<B> {
1576+
match elt {
1577+
Some(a) => Some((self.f)(a)),
1578+
_ => None
1579+
}
1580+
}
1581+
}
1582+
15731583
#[stable(feature = "rust1", since = "1.0.0")]
15741584
impl<B, I: Iterator, F> Iterator for Map<I, F> where F: FnMut(I::Item) -> B {
15751585
type Item = B;
15761586

15771587
#[inline]
15781588
fn next(&mut self) -> Option<B> {
1579-
self.iter.next().map(|a| (self.f)(a))
1589+
let next = self.iter.next();
1590+
self.do_map(next)
15801591
}
15811592

15821593
#[inline]
@@ -1591,7 +1602,8 @@ impl<B, I: DoubleEndedIterator, F> DoubleEndedIterator for Map<I, F> where
15911602
{
15921603
#[inline]
15931604
fn next_back(&mut self) -> Option<B> {
1594-
self.iter.next_back().map(|a| (self.f)(a))
1605+
let next = self.iter.next_back();
1606+
self.do_map(next)
15951607
}
15961608
}
15971609

@@ -1606,7 +1618,8 @@ impl<B, I: RandomAccessIterator, F> RandomAccessIterator for Map<I, F> where
16061618

16071619
#[inline]
16081620
fn idx(&mut self, index: usize) -> Option<B> {
1609-
self.iter.idx(index).map(|a| (self.f)(a))
1621+
let elt = self.iter.idx(index);
1622+
self.do_map(elt)
16101623
}
16111624
}
16121625

branches/auto/src/libcore/macros.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,10 @@ macro_rules! assert_eq {
100100
/// This will invoke the `panic!` macro if the provided expression cannot be
101101
/// evaluated to `true` at runtime.
102102
///
103-
/// Unlike `assert!`, `debug_assert!` statements are only enabled in non
104-
/// optimized builds by default. An optimized build will omit all
105-
/// `debug_assert!` statements unless `-C debug-assertions` is passed to the
106-
/// compiler. This makes `debug_assert!` useful for checks that are too
107-
/// expensive to be present in a release build but may be helpful during
108-
/// development.
103+
/// Unlike `assert!`, `debug_assert!` statements can be disabled by passing
104+
/// `--cfg ndebug` to the compiler. This makes `debug_assert!` useful for
105+
/// checks that are too expensive to be present in a release build but may be
106+
/// helpful during development.
109107
///
110108
/// # Example
111109
///
@@ -127,20 +125,18 @@ macro_rules! assert_eq {
127125
#[macro_export]
128126
#[stable(feature = "rust1", since = "1.0.0")]
129127
macro_rules! debug_assert {
130-
($($arg:tt)*) => (if cfg!(debug_assertions) { assert!($($arg)*); })
128+
($($arg:tt)*) => (if cfg!(not(ndebug)) { assert!($($arg)*); })
131129
}
132130

133131
/// Asserts that two expressions are equal to each other, testing equality in
134132
/// both directions.
135133
///
136134
/// On panic, this macro will print the values of the expressions.
137135
///
138-
/// Unlike `assert_eq!`, `debug_assert_eq!` statements are only enabled in non
139-
/// optimized builds by default. An optimized build will omit all
140-
/// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the
141-
/// compiler. This makes `debug_assert_eq!` useful for checks that are too
142-
/// expensive to be present in a release build but may be helpful during
143-
/// development.
136+
/// Unlike `assert_eq!`, `debug_assert_eq!` statements can be disabled by
137+
/// passing `--cfg ndebug` to the compiler. This makes `debug_assert_eq!`
138+
/// useful for checks that are too expensive to be present in a release build
139+
/// but may be helpful during development.
144140
///
145141
/// # Example
146142
///
@@ -151,7 +147,7 @@ macro_rules! debug_assert {
151147
/// ```
152148
#[macro_export]
153149
macro_rules! debug_assert_eq {
154-
($($arg:tt)*) => (if cfg!(debug_assertions) { assert_eq!($($arg)*); })
150+
($($arg:tt)*) => (if cfg!(not(ndebug)) { assert_eq!($($arg)*); })
155151
}
156152

157153
/// Short circuiting evaluation on Err

0 commit comments

Comments
 (0)