Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 6 pull requests #63790

Merged
merged 19 commits into from
Aug 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
9b8514b
ci: move libc mirrors to the rust-lang-ci-mirrors bucket
pietroalbini Aug 21, 2019
4d50b24
update Miri
RalfJung Aug 21, 2019
c076d30
take into account the system theme
GuillaumeGomez May 27, 2019
1dd56aa
Add a test for an opaque macro eagerly expanding its arguments
petrochenkov Aug 19, 2019
96032aa
expand: Keep the correct current expansion ID for eager expansions
petrochenkov Aug 19, 2019
a83c356
expand: Do not do questionable span adjustment before eagerly expandi…
petrochenkov Aug 19, 2019
93d369b
resolve/expand: Rename some things for clarity and add comments
petrochenkov Aug 19, 2019
fe2dc91
Add a regression test for issue #63460
petrochenkov Aug 21, 2019
5cf43bd
Run Clippy without json-rendered flag
mati865 Aug 21, 2019
a8d7ea7
improve diagnostics: break/continue wrong context
awaitlink Aug 21, 2019
1bd9424
Replaced skipStorage with saveTheme variable
GuillaumeGomez Aug 21, 2019
dd7082e
`r#type` -> `ty`
awaitlink Aug 21, 2019
600a64b
more `--bless`ing + test error annotations fixes
awaitlink Aug 21, 2019
d034cca
Rollup merge of #61236 - GuillaumeGomez:system-theme, r=Mark-Simulacrum
Centril Aug 21, 2019
7043696
Rollup merge of #63717 - petrochenkov:eager, r=matthewjasper
Centril Aug 21, 2019
ddb6314
Rollup merge of #63747 - RalfJung:miri, r=RalfJung
Centril Aug 21, 2019
f362387
Rollup merge of #63772 - pietroalbini:mirrors-libc, r=alexcrichton
Centril Aug 21, 2019
3a1eb34
Rollup merge of #63780 - u32i64:issue-63712, r=estebank
Centril Aug 21, 2019
1294774
Rollup merge of #63781 - mati865:clippy, r=oli-obk,ehuss
Centril Aug 21, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/bootstrap/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion src/ci/docker/dist-various-1/install-mipsel-musl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/librustc_passes/error_codes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
```

Expand Down
37 changes: 18 additions & 19 deletions src/librustc_passes/loops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ use errors::Applicability;
enum Context {
Normal,
Loop(hir::LoopSource),
Closure,
AsyncClosure,
Closure(Span),
AsyncClosure(Span),
LabeledBlock,
AnonConst,
}
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -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();
}
},
}
}

Expand Down
34 changes: 22 additions & 12 deletions src/librustc_resolve/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<Option<Lrc<SyntaxExtension>>, Indeterminate> {
let parent_scope = self.invocation_parent_scopes[&invoc_id];
fn resolve_macro_invocation(
&mut self, invoc: &Invocation, eager_expansion_root: ExpnId, force: bool
) -> Result<Option<Lrc<SyntaxExtension>>, Indeterminate> {
let invoc_id = invoc.expansion_data.id;
let parent_scope = match self.invocation_parent_scopes.get(&invoc_id) {
Some(parent_scope) => *parent_scope,
None => {
// If there's no entry in the table, then we are resolving an eagerly expanded
// macro, which should inherit its parent scope from its eager expansion root -
// the macro that requested this eager expansion.
let parent_scope = *self.invocation_parent_scopes.get(&eager_expansion_root)
.expect("non-eager expansion without a parent scope");
self.invocation_parent_scopes.insert(invoc_id, parent_scope);
parent_scope
}
};

let (path, kind, derives, after_derive) = match invoc.kind {
InvocationKind::Attr { ref attr, ref derives, after_derive, .. } =>
(&attr.path, MacroKind::Attr, self.arenas.alloc_ast_paths(derives), after_derive),
Expand All @@ -161,7 +175,7 @@ impl<'a> base::Resolver for Resolver<'a> {
match self.resolve_macro_path(path, Some(MacroKind::Derive),
&parent_scope, true, force) {
Ok((Some(ref ext), _)) if ext.is_derive_copy => {
self.add_derives(invoc.expansion_data.id, SpecialDerives::COPY);
self.add_derives(invoc_id, SpecialDerives::COPY);
return Ok(None);
}
Err(Determinacy::Undetermined) => result = Err(Indeterminate),
Expand All @@ -178,19 +192,15 @@ impl<'a> base::Resolver for Resolver<'a> {
let (ext, res) = self.smart_resolve_macro_path(path, kind, parent_scope, force)?;

let span = invoc.span();
invoc.expansion_data.id.set_expn_data(
ext.expn_data(parent_scope.expansion, span, fast_print_path(path))
);
invoc_id.set_expn_data(ext.expn_data(parent_scope.expansion, span, fast_print_path(path)));

if let Res::Def(_, def_id) = res {
if after_derive {
self.session.span_err(span, "macro attributes must be placed before `#[derive]`");
}
self.macro_defs.insert(invoc.expansion_data.id, def_id);
let normal_module_def_id =
self.macro_def_scope(invoc.expansion_data.id).normal_ancestor_id;
self.definitions.add_parent_module_of_macro_def(invoc.expansion_data.id,
normal_module_def_id);
self.macro_defs.insert(invoc_id, def_id);
let normal_module_def_id = self.macro_def_scope(invoc_id).normal_ancestor_id;
self.definitions.add_parent_module_of_macro_def(invoc_id, normal_module_def_id);
}

Ok(Some(ext))
Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -914,7 +914,7 @@ themePicker.onblur = handleThemeButtonsBlur;
var but = document.createElement('button');
but.innerHTML = item;
but.onclick = function(el) {{
switchTheme(currentTheme, mainTheme, item);
switchTheme(currentTheme, mainTheme, item, true);
}};
but.onblur = handleThemeButtonsBlur;
themes.appendChild(but);
Expand Down
15 changes: 15 additions & 0 deletions src/librustdoc/html/static/rustdoc.css
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,21 @@
box-sizing: border-box;
}

/* This part handles the "default" theme being used depending on the system one. */
html {
content: "";
}
@media (prefers-color-scheme: light) {
html {
content: "light";
}
}
@media (prefers-color-scheme: dark) {
html {
content: "dark";
}
}

/* General structure and fonts */

body {
Expand Down
16 changes: 13 additions & 3 deletions src/librustdoc/html/static/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ function getCurrentValue(name) {
return null;
}

function switchTheme(styleElem, mainStyleElem, newTheme) {
function switchTheme(styleElem, mainStyleElem, newTheme, saveTheme) {
var fullBasicCss = "rustdoc" + resourcesSuffix + ".css";
var fullNewTheme = newTheme + resourcesSuffix + ".css";
var newHref = mainStyleElem.href.replace(fullBasicCss, fullNewTheme);
Expand All @@ -109,8 +109,18 @@ function switchTheme(styleElem, mainStyleElem, newTheme) {
});
if (found === true) {
styleElem.href = newHref;
updateLocalStorage("rustdoc-theme", newTheme);
// If this new value comes from a system setting or from the previously saved theme, no
// need to save it.
if (saveTheme === true) {
updateLocalStorage("rustdoc-theme", newTheme);
}
}
}

switchTheme(currentTheme, mainTheme, getCurrentValue("rustdoc-theme") || "light");
function getSystemValue() {
return getComputedStyle(document.documentElement).getPropertyValue('content');
}

switchTheme(currentTheme, mainTheme,
getCurrentValue("rustdoc-theme") || getSystemValue() || "light",
false);
10 changes: 4 additions & 6 deletions src/libsyntax/ext/base.rs
Original file line number Diff line number Diff line change
Expand Up @@ -682,8 +682,9 @@ pub trait Resolver {

fn resolve_imports(&mut self);

fn resolve_macro_invocation(&mut self, invoc: &Invocation, invoc_id: ExpnId, force: bool)
-> Result<Option<Lrc<SyntaxExtension>>, Indeterminate>;
fn resolve_macro_invocation(
&mut self, invoc: &Invocation, eager_expansion_root: ExpnId, force: bool
) -> Result<Option<Lrc<SyntaxExtension>>, Indeterminate>;

fn check_unused_macros(&self);

Expand Down Expand Up @@ -908,12 +909,9 @@ impl<'a> ExtCtxt<'a> {
/// compilation on error, merely emits a non-fatal error and returns `None`.
pub fn expr_to_spanned_string<'a>(
cx: &'a mut ExtCtxt<'_>,
mut expr: P<ast::Expr>,
expr: P<ast::Expr>,
err_msg: &str,
) -> Result<(Symbol, ast::StrStyle, Span), Option<DiagnosticBuilder<'a>>> {
// Update `expr.span`'s ctxt now in case expr is an `include!` macro invocation.
expr.span = expr.span.apply_mark(cx.current_expansion.id);

// Perform eager expansion on the expression.
// We want to be able to handle e.g., `concat!("foo", "bar")`.
let expr = cx.expander().fully_expand_fragment(AstFragment::Expr(expr)).make_expr();
Expand Down
7 changes: 4 additions & 3 deletions src/libsyntax/ext/expand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -305,9 +305,11 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
continue
};

let scope =
let eager_expansion_root =
if self.monotonic { invoc.expansion_data.id } else { orig_expansion_data.id };
let ext = match self.cx.resolver.resolve_macro_invocation(&invoc, scope, force) {
let ext = match self.cx.resolver.resolve_macro_invocation(
&invoc, eager_expansion_root, force
) {
Ok(ext) => ext,
Err(Indeterminate) => {
undetermined_invocations.push(invoc);
Expand All @@ -318,7 +320,6 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
progress = true;
let ExpansionData { depth, id: expn_id, .. } = invoc.expansion_data;
self.cx.current_expansion = invoc.expansion_data.clone();
self.cx.current_expansion.id = scope;

// FIXME(jseyfried): Refactor out the following logic
let (expanded_fragment, new_invocations) = if let Some(ext) = ext {
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/array-break-length.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
fn main() {
loop {
|_: [_; break]| {} //~ ERROR: `break` outside of loop
|_: [_; break]| {} //~ ERROR: `break` outside of a loop
//~^ ERROR mismatched types
}

loop {
|_: [_; continue]| {} //~ ERROR: `continue` outside of loop
|_: [_; continue]| {} //~ ERROR: `continue` outside of a loop
//~^ ERROR mismatched types
}
}
8 changes: 4 additions & 4 deletions src/test/ui/array-break-length.stderr
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
error[E0268]: `break` outside of loop
error[E0268]: `break` outside of a loop
--> $DIR/array-break-length.rs:3:17
|
LL | |_: [_; break]| {}
| ^^^^^ cannot break outside of a loop
| ^^^^^ cannot `break` outside of a loop

error[E0268]: `continue` outside of loop
error[E0268]: `continue` outside of a loop
--> $DIR/array-break-length.rs:8:17
|
LL | |_: [_; continue]| {}
| ^^^^^^^^ cannot break outside of a loop
| ^^^^^^^^ cannot `continue` outside of a loop

error[E0308]: mismatched types
--> $DIR/array-break-length.rs:3:9
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ async fn return_targets_async_block_not_async_fn() -> u8 {

fn no_break_in_async_block() {
async {
break 0u8; //~ ERROR `break` inside of an async block
break 0u8; //~ ERROR `break` inside of an `async` block
};
}

fn no_break_in_async_block_even_with_outer_loop() {
loop {
async {
break 0u8; //~ ERROR `break` inside of an async block
break 0u8; //~ ERROR `break` inside of an `async` block
};
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
error[E0267]: `break` inside of an async block
error[E0267]: `break` inside of an `async` block
--> $DIR/async-block-control-flow-static-semantics.rs:33:9
|
LL | break 0u8;
| ^^^^^^^^^ cannot break inside of an async block
LL | async {
| ___________-
LL | | break 0u8;
| | ^^^^^^^^^ cannot `break` inside of an `async` block
LL | | };
| |_____- enclosing `async` block

error[E0267]: `break` inside of an async block
error[E0267]: `break` inside of an `async` block
--> $DIR/async-block-control-flow-static-semantics.rs:40:13
|
LL | break 0u8;
| ^^^^^^^^^ cannot break inside of an async block
LL | async {
| _______________-
LL | | break 0u8;
| | ^^^^^^^^^ cannot `break` inside of an `async` block
LL | | };
| |_________- enclosing `async` block

error[E0308]: mismatched types
--> $DIR/async-block-control-flow-static-semantics.rs:13:43
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/break-outside-loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ fn cond() -> bool { true }
fn foo<F>(_: F) where F: FnOnce() {}

fn main() {
let pth = break; //~ ERROR: `break` outside of loop
if cond() { continue } //~ ERROR: `continue` outside of loop
let pth = break; //~ ERROR: `break` outside of a loop
if cond() { continue } //~ ERROR: `continue` outside of a loop

while cond() {
if cond() { break }
Expand All @@ -21,5 +21,5 @@ fn main() {

let rs: Foo = Foo{t: pth};

let unconstrained = break; //~ ERROR: `break` outside of loop
let unconstrained = break; //~ ERROR: `break` outside of a loop
}
Loading