Skip to content

Commit 03513ab

Browse files
committed
---
yaml --- r: 276199 b: refs/heads/master c: ac19fdc h: refs/heads/master i: 276197: 680c393 276195: 27fd0e3 276191: a5acace
1 parent 2e7d0ea commit 03513ab

File tree

187 files changed

+3714
-2821
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+3714
-2821
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: 9e2300015bc2a88f8f3f81d208f5dfcc1c45d31d
2+
refs/heads/master: ac19fdc09c47f0402f840173d31955647516331b
33
refs/heads/snap-stage3: 235d77457d80b549dad3ac36d94f235208a1eafb
44
refs/heads/try: 49312a405e14a449b98fe0056b12a40ac128be4a
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

trunk/src/liballoc_jemalloc/lib.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,28 +41,28 @@ use libc::{c_int, c_void, size_t};
4141
#[cfg(not(cargobuild))]
4242
extern {}
4343

44-
// Note that the symbols here are prefixed by default on OSX (we don't
45-
// explicitly request it), and on Android and DragonFly we explicitly request
46-
// it as unprefixing cause segfaults (mismatches in allocators).
44+
// Note that the symbols here are prefixed by default on OSX and Windows (we
45+
// don't explicitly request it), and on Android and DragonFly we explicitly
46+
// request it as unprefixing cause segfaults (mismatches in allocators).
4747
extern {
4848
#[cfg_attr(any(target_os = "macos", target_os = "android", target_os = "ios",
49-
target_os = "dragonfly"),
49+
target_os = "dragonfly", target_os = "windows"),
5050
link_name = "je_mallocx")]
5151
fn mallocx(size: size_t, flags: c_int) -> *mut c_void;
5252
#[cfg_attr(any(target_os = "macos", target_os = "android", target_os = "ios",
53-
target_os = "dragonfly"),
53+
target_os = "dragonfly", target_os = "windows"),
5454
link_name = "je_rallocx")]
5555
fn rallocx(ptr: *mut c_void, size: size_t, flags: c_int) -> *mut c_void;
5656
#[cfg_attr(any(target_os = "macos", target_os = "android", target_os = "ios",
57-
target_os = "dragonfly"),
57+
target_os = "dragonfly", target_os = "windows"),
5858
link_name = "je_xallocx")]
5959
fn xallocx(ptr: *mut c_void, size: size_t, extra: size_t, flags: c_int) -> size_t;
6060
#[cfg_attr(any(target_os = "macos", target_os = "android", target_os = "ios",
61-
target_os = "dragonfly"),
61+
target_os = "dragonfly", target_os = "windows"),
6262
link_name = "je_sdallocx")]
6363
fn sdallocx(ptr: *mut c_void, size: size_t, flags: c_int);
6464
#[cfg_attr(any(target_os = "macos", target_os = "android", target_os = "ios",
65-
target_os = "dragonfly"),
65+
target_os = "dragonfly", target_os = "windows"),
6666
link_name = "je_nallocx")]
6767
fn nallocx(size: size_t, flags: c_int) -> size_t;
6868
}

trunk/src/libcore/iter/mod.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,23 @@ impl<A, B> Iterator for Chain<A, B> where
541541
}
542542
}
543543

544+
#[inline]
545+
fn find<P>(&mut self, mut predicate: P) -> Option<Self::Item> where
546+
P: FnMut(&Self::Item) -> bool,
547+
{
548+
match self.state {
549+
ChainState::Both => match self.a.find(&mut predicate) {
550+
None => {
551+
self.state = ChainState::Back;
552+
self.b.find(predicate)
553+
}
554+
v => v
555+
},
556+
ChainState::Front => self.a.find(predicate),
557+
ChainState::Back => self.b.find(predicate),
558+
}
559+
}
560+
544561
#[inline]
545562
fn last(self) -> Option<A::Item> {
546563
match self.state {

trunk/src/libcore/num/int_macros.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#![doc(hidden)]
1212

13+
#[cfg(stage0)]
1314
macro_rules! int_module { ($T:ty, $bits:expr) => (
1415

1516
// FIXME(#11621): Should be deprecated once CTFE is implemented in favour of
@@ -25,3 +26,15 @@ pub const MIN: $T = (-1 as $T) << ($bits - 1);
2526
pub const MAX: $T = !MIN;
2627

2728
) }
29+
30+
#[cfg(not(stage0))]
31+
macro_rules! int_module { ($T:ident, $bits:expr) => (
32+
33+
#[stable(feature = "rust1", since = "1.0.0")]
34+
#[allow(missing_docs)]
35+
pub const MIN: $T = $T::min_value();
36+
#[stable(feature = "rust1", since = "1.0.0")]
37+
#[allow(missing_docs)]
38+
pub const MAX: $T = $T::max_value();
39+
40+
) }

trunk/src/libcore/num/uint_macros.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#![doc(hidden)]
1212

13+
#[cfg(stage0)]
1314
macro_rules! uint_module { ($T:ty, $bits:expr) => (
1415

1516
#[stable(feature = "rust1", since = "1.0.0")]
@@ -20,3 +21,15 @@ pub const MIN: $T = 0 as $T;
2021
pub const MAX: $T = !0 as $T;
2122

2223
) }
24+
25+
#[cfg(not(stage0))]
26+
macro_rules! uint_module { ($T:ident, $bits:expr) => (
27+
28+
#[stable(feature = "rust1", since = "1.0.0")]
29+
#[allow(missing_docs)]
30+
pub const MIN: $T = $T::min_value();
31+
#[stable(feature = "rust1", since = "1.0.0")]
32+
#[allow(missing_docs)]
33+
pub const MAX: $T = $T::max_value();
34+
35+
) }

trunk/src/libcoretest/iter.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@ fn test_iterator_chain_count() {
133133
assert_eq!(zs.iter().chain(&ys).count(), 4);
134134
}
135135

136+
#[test]
137+
fn test_iterator_chain_find() {
138+
let xs = [0, 1, 2, 3, 4, 5];
139+
let ys = [30, 40, 50, 60];
140+
let mut iter = xs.iter().chain(&ys);
141+
assert_eq!(iter.find(|&&i| i == 4), Some(&4));
142+
assert_eq!(iter.next(), Some(&5));
143+
assert_eq!(iter.find(|&&i| i == 40), Some(&40));
144+
assert_eq!(iter.next(), Some(&50));
145+
assert_eq!(iter.find(|&&i| i == 100), None);
146+
assert_eq!(iter.next(), None);
147+
}
148+
136149
#[test]
137150
fn test_filter_map() {
138151
let it = (0..).step_by(1).take(10)

trunk/src/librustc/diagnostics.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,17 @@ fn foo(x: u8) -> u8 {
635635
```
636636
637637
It is advisable to find out what the unhandled cases are and check for them,
638-
returning an appropriate value or panicking if necessary.
638+
returning an appropriate value or panicking if necessary. Check if you need
639+
to remove a semicolon from the last expression, like in this case:
640+
641+
```ignore
642+
fn foo(x: u8) -> u8 {
643+
inner(2*x + 1);
644+
}
645+
```
646+
647+
The semicolon discards the return value of `inner`, instead of returning
648+
it from `foo`.
639649
"##,
640650

641651
E0270: r##"
@@ -1569,5 +1579,5 @@ register_diagnostics! {
15691579
E0490, // a value of type `..` is borrowed for too long
15701580
E0491, // in type `..`, reference has a longer lifetime than the data it...
15711581
E0495, // cannot infer an appropriate lifetime due to conflicting requirements
1572-
E0524, // expected a closure that implements `..` but this closure only implements `..`
1582+
E0525, // expected a closure that implements `..` but this closure only implements `..`
15731583
}

trunk/src/librustc/infer/error_reporting.rs

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,12 @@ pub trait ErrorReporting<'tcx> {
249249
terr: &TypeError<'tcx>)
250250
-> DiagnosticBuilder<'tcx>;
251251

252-
fn values_str(&self, values: &ValuePairs<'tcx>) -> Option<String>;
252+
fn values_str(&self, values: &ValuePairs<'tcx>) -> Option<(String, String)>;
253253

254254
fn expected_found_str<T: fmt::Display + Resolvable<'tcx> + TypeFoldable<'tcx>>(
255255
&self,
256256
exp_found: &ty::error::ExpectedFound<T>)
257-
-> Option<String>;
257+
-> Option<(String, String)>;
258258

259259
fn report_concrete_failure(&self,
260260
origin: SubregionOrigin<'tcx>,
@@ -535,7 +535,7 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
535535
trace: TypeTrace<'tcx>,
536536
terr: &TypeError<'tcx>)
537537
-> DiagnosticBuilder<'tcx> {
538-
let expected_found_str = match self.values_str(&trace.values) {
538+
let (expected, found) = match self.values_str(&trace.values) {
539539
Some(v) => v,
540540
None => {
541541
return self.tcx.sess.diagnostic().struct_dummy(); /* derived error */
@@ -548,18 +548,17 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
548548
false
549549
};
550550

551-
let expected_found_str = if is_simple_error {
552-
expected_found_str
553-
} else {
554-
format!("{} ({})", expected_found_str, terr)
555-
};
556-
557551
let mut err = struct_span_err!(self.tcx.sess,
558552
trace.origin.span(),
559553
E0308,
560-
"{}: {}",
561-
trace.origin,
562-
expected_found_str);
554+
"{}",
555+
trace.origin);
556+
557+
if !is_simple_error {
558+
err = err.note_expected_found(&"type", &expected, &found);
559+
}
560+
561+
err = err.span_label(trace.origin.span(), &terr);
563562

564563
self.check_and_note_conflicting_crates(&mut err, terr, trace.origin.span());
565564

@@ -574,6 +573,7 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
574573
},
575574
_ => ()
576575
}
576+
577577
err
578578
}
579579

@@ -631,7 +631,7 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
631631

632632
/// Returns a string of the form "expected `{}`, found `{}`", or None if this is a derived
633633
/// error.
634-
fn values_str(&self, values: &ValuePairs<'tcx>) -> Option<String> {
634+
fn values_str(&self, values: &ValuePairs<'tcx>) -> Option<(String, String)> {
635635
match *values {
636636
infer::Types(ref exp_found) => self.expected_found_str(exp_found),
637637
infer::TraitRefs(ref exp_found) => self.expected_found_str(exp_found),
@@ -642,7 +642,7 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
642642
fn expected_found_str<T: fmt::Display + Resolvable<'tcx> + TypeFoldable<'tcx>>(
643643
&self,
644644
exp_found: &ty::error::ExpectedFound<T>)
645-
-> Option<String>
645+
-> Option<(String, String)>
646646
{
647647
let expected = exp_found.expected.resolve(self);
648648
if expected.references_error() {
@@ -654,9 +654,7 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
654654
return None;
655655
}
656656

657-
Some(format!("expected `{}`, found `{}`",
658-
expected,
659-
found))
657+
Some((format!("{}", expected), format!("{}", found)))
660658
}
661659

662660
fn report_generic_bound_failure(&self,
@@ -684,10 +682,9 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
684682
E0309,
685683
"{} may not live long enough",
686684
labeled_user_string);
687-
err.fileline_help(origin.span(),
688-
&format!("consider adding an explicit lifetime bound `{}: {}`...",
689-
bound_kind,
690-
sub));
685+
err.help(&format!("consider adding an explicit lifetime bound `{}: {}`...",
686+
bound_kind,
687+
sub));
691688
err
692689
}
693690

@@ -698,10 +695,9 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
698695
E0310,
699696
"{} may not live long enough",
700697
labeled_user_string);
701-
err.fileline_help(origin.span(),
702-
&format!("consider adding an explicit lifetime \
703-
bound `{}: 'static`...",
704-
bound_kind));
698+
err.help(&format!("consider adding an explicit lifetime \
699+
bound `{}: 'static`...",
700+
bound_kind));
705701
err
706702
}
707703

@@ -712,9 +708,8 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> {
712708
E0311,
713709
"{} may not live long enough",
714710
labeled_user_string);
715-
err.fileline_help(origin.span(),
716-
&format!("consider adding an explicit lifetime bound for `{}`",
717-
bound_kind));
711+
err.help(&format!("consider adding an explicit lifetime bound for `{}`",
712+
bound_kind));
718713
self.tcx.note_and_explain_region(
719714
&mut err,
720715
&format!("{} must be valid for ", labeled_user_string),
@@ -1751,11 +1746,11 @@ impl<'a, 'tcx> ErrorReportingHelpers<'tcx> for InferCtxt<'a, 'tcx> {
17511746
};
17521747

17531748
match self.values_str(&trace.values) {
1754-
Some(values_str) => {
1749+
Some((expected, found)) => {
17551750
err.span_note(
17561751
trace.origin.span(),
1757-
&format!("...so that {} ({})",
1758-
desc, values_str));
1752+
&format!("...so that {} (expected {}, found {})",
1753+
desc, expected, found));
17591754
}
17601755
None => {
17611756
// Really should avoid printing this error at

trunk/src/librustc/lint/context.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -456,17 +456,13 @@ pub fn raw_struct_lint<'a>(sess: &'a Session,
456456
it will become a hard error in a future release!");
457457
let citation = format!("for more information, see {}",
458458
future_incompatible.reference);
459-
if let Some(sp) = span {
460-
err.fileline_warn(sp, &explanation);
461-
err.fileline_note(sp, &citation);
462-
} else {
463-
err.warn(&explanation);
464-
err.note(&citation);
465-
}
459+
err.warn(&explanation);
460+
err.note(&citation);
466461
}
467462

468463
if let Some(span) = def {
469-
err.span_note(span, "lint level defined here");
464+
let explanation = "lint level defined here";
465+
err.span_note(span, &explanation);
470466
}
471467

472468
err
@@ -542,7 +538,7 @@ pub trait LintContext: Sized {
542538
let mut err = self.lookup(lint, Some(span), msg);
543539
if self.current_level(lint) != Level::Allow {
544540
if note_span == span {
545-
err.fileline_note(note_span, note);
541+
err.note(note);
546542
} else {
547543
err.span_note(note_span, note);
548544
}

trunk/src/librustc/session/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ pub fn early_error(output: config::ErrorOutputType, msg: &str) -> ! {
567567
}
568568
config::ErrorOutputType::Json => Box::new(JsonEmitter::basic()),
569569
};
570-
emitter.emit(None, msg, None, errors::Level::Fatal);
570+
emitter.emit(&MultiSpan::new(), msg, None, errors::Level::Fatal);
571571
panic!(errors::FatalError);
572572
}
573573

@@ -578,7 +578,7 @@ pub fn early_warn(output: config::ErrorOutputType, msg: &str) {
578578
}
579579
config::ErrorOutputType::Json => Box::new(JsonEmitter::basic()),
580580
};
581-
emitter.emit(None, msg, None, errors::Level::Warning);
581+
emitter.emit(&MultiSpan::new(), msg, None, errors::Level::Warning);
582582
}
583583

584584
// Err(0) means compilation was stopped, but no errors were found.

0 commit comments

Comments
 (0)