diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 955809e80747b..4e49aaa16eae1 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -875,8 +875,7 @@ impl<'a> Builder<'a> {
}
if cmd == "clippy" {
- extra_args.push_str("-Zforce-unstable-if-unmarked -Zunstable-options \
- --json-rendered=termcolor");
+ extra_args.push_str("-Zforce-unstable-if-unmarked");
}
if !extra_args.is_empty() {
diff --git a/src/ci/docker/dist-various-1/install-mipsel-musl.sh b/src/ci/docker/dist-various-1/install-mipsel-musl.sh
index 9ae41218ee4fb..de8c359d16757 100755
--- a/src/ci/docker/dist-various-1/install-mipsel-musl.sh
+++ b/src/ci/docker/dist-various-1/install-mipsel-musl.sh
@@ -5,7 +5,7 @@ mkdir /usr/local/mipsel-linux-musl
# Note that this originally came from:
# https://downloads.openwrt.org/snapshots/trunk/malta/generic/
# OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2
-URL="https://rust-lang-ci2.s3.amazonaws.com/libc"
+URL="https://rust-lang-ci-mirrors.s3-us-west-1.amazonaws.com/rustc"
FILE="OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2"
curl -L "$URL/$FILE" | tar xjf - -C /usr/local/mipsel-linux-musl --strip-components=2
diff --git a/src/librustc_passes/error_codes.rs b/src/librustc_passes/error_codes.rs
index cd33943e77e20..a30cd8a627fe3 100644
--- a/src/librustc_passes/error_codes.rs
+++ b/src/librustc_passes/error_codes.rs
@@ -131,7 +131,7 @@ be taken. Erroneous code example:
```compile_fail,E0268
fn some_func() {
- break; // error: `break` outside of loop
+ break; // error: `break` outside of a loop
}
```
diff --git a/src/librustc_passes/loops.rs b/src/librustc_passes/loops.rs
index 1547e607b9c61..dbfbec32a6fbf 100644
--- a/src/librustc_passes/loops.rs
+++ b/src/librustc_passes/loops.rs
@@ -16,8 +16,8 @@ use errors::Applicability;
enum Context {
Normal,
Loop(hir::LoopSource),
- Closure,
- AsyncClosure,
+ Closure(Span),
+ AsyncClosure(Span),
LabeledBlock,
AnonConst,
}
@@ -58,11 +58,11 @@ impl<'a, 'hir> Visitor<'hir> for CheckLoopVisitor<'a, 'hir> {
hir::ExprKind::Loop(ref b, _, source) => {
self.with_context(Loop(source), |v| v.visit_block(&b));
}
- hir::ExprKind::Closure(_, ref function_decl, b, _, movability) => {
+ hir::ExprKind::Closure(_, ref function_decl, b, span, movability) => {
let cx = if let Some(GeneratorMovability::Static) = movability {
- AsyncClosure
+ AsyncClosure(span)
} else {
- Closure
+ Closure(span)
};
self.visit_fn_decl(&function_decl);
self.with_context(cx, |v| v.visit_nested_body(b));
@@ -170,23 +170,22 @@ impl<'a, 'hir> CheckLoopVisitor<'a, 'hir> {
}
fn require_break_cx(&self, name: &str, span: Span) {
- match self.cx {
- LabeledBlock | Loop(_) => {}
- Closure => {
- struct_span_err!(self.sess, span, E0267, "`{}` inside of a closure", name)
- .span_label(span, "cannot break inside of a closure")
+ let err_inside_of = |article, ty, closure_span| {
+ struct_span_err!(self.sess, span, E0267, "`{}` inside of {} {}", name, article, ty)
+ .span_label(span, format!("cannot `{}` inside of {} {}", name, article, ty))
+ .span_label(closure_span, &format!("enclosing {}", ty))
.emit();
- }
- AsyncClosure => {
- struct_span_err!(self.sess, span, E0267, "`{}` inside of an async block", name)
- .span_label(span, "cannot break inside of an async block")
- .emit();
- }
+ };
+
+ match self.cx {
+ LabeledBlock | Loop(_) => {},
+ Closure(closure_span) => err_inside_of("a", "closure", closure_span),
+ AsyncClosure(closure_span) => err_inside_of("an", "`async` block", closure_span),
Normal | AnonConst => {
- struct_span_err!(self.sess, span, E0268, "`{}` outside of loop", name)
- .span_label(span, "cannot break outside of a loop")
+ struct_span_err!(self.sess, span, E0268, "`{}` outside of a loop", name)
+ .span_label(span, format!("cannot `{}` outside of a loop", name))
.emit();
- }
+ },
}
}
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs
index 01ad67252a387..719167eb057b2 100644
--- a/src/librustc_resolve/macros.rs
+++ b/src/librustc_resolve/macros.rs
@@ -140,9 +140,23 @@ impl<'a> base::Resolver for Resolver<'a> {
ImportResolver { r: self }.resolve_imports()
}
- fn resolve_macro_invocation(&mut self, invoc: &Invocation, invoc_id: ExpnId, force: bool)
- -> Result