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 3 pull requests #68442

Merged
merged 8 commits into from
Jan 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 10 additions & 4 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ dependencies = [
"glob",
"hex 0.4.0",
"home",
"humantime",
"humantime 2.0.0",
"ignore",
"im-rc",
"jobserver",
Expand Down Expand Up @@ -1013,7 +1013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
dependencies = [
"atty",
"humantime",
"humantime 1.3.0",
"log",
"regex",
"termcolor",
Expand All @@ -1026,7 +1026,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
dependencies = [
"atty",
"humantime",
"humantime 1.3.0",
"log",
"regex",
"termcolor",
Expand Down Expand Up @@ -1454,6 +1454,12 @@ dependencies = [
"quick-error",
]

[[package]]
name = "humantime"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9b6c53306532d3c8e8087b44e6580e10db51a023cf9b433cea2ac38066b92da"

[[package]]
name = "hyper"
version = "0.12.31"
Expand Down Expand Up @@ -2647,7 +2653,7 @@ dependencies = [
"clap",
"derive_more",
"env_logger 0.6.2",
"humantime",
"humantime 1.3.0",
"lazy_static 1.3.0",
"log",
"rls-span",
Expand Down
2 changes: 1 addition & 1 deletion src/doc/book
Submodule book updated 37 files
+1 −1 .travis.yml
+0 −142 2018-edition/Cargo.lock
+0 −36 2018-edition/Cargo.toml
+0 −201 2018-edition/LICENSE-APACHE
+0 −25 2018-edition/LICENSE-MIT
+0 −13 2018-edition/convert-quotes.sh
+0 −24 2018-edition/nostarch.sh
+0 −34 2018-edition/style-guide.md
+0 −218 2018-edition/tools/docx-to-md.xsl
+0 −104 2018-edition/tools/src/bin/concat_chapters.rs
+0 −73 2018-edition/tools/src/bin/convert_quotes.rs
+0 −243 2018-edition/tools/src/bin/lfp.rs
+0 −406 2018-edition/tools/src/bin/link2print.rs
+0 −45 2018-edition/tools/src/bin/remove_links.rs
+0 −52 2018-edition/tools/src/bin/remove_markup.rs
+4 −4 Cargo.toml
+5 −1 README.md
+0 −32 nostarch/updates.md
+0 −142 second-edition/Cargo.lock
+0 −36 second-edition/Cargo.toml
+0 −201 second-edition/LICENSE-APACHE
+0 −25 second-edition/LICENSE-MIT
+0 −13 second-edition/convert-quotes.sh
+0 −20 second-edition/doc-to-md.sh
+0 −24 second-edition/nostarch.sh
+0 −34 second-edition/style-guide.md
+0 −218 second-edition/tools/docx-to-md.xsl
+0 −104 second-edition/tools/src/bin/concat_chapters.rs
+0 −73 second-edition/tools/src/bin/convert_quotes.rs
+0 −242 second-edition/tools/src/bin/lfp.rs
+0 −406 second-edition/tools/src/bin/link2print.rs
+0 −45 second-edition/tools/src/bin/remove_links.rs
+0 −52 second-edition/tools/src/bin/remove_markup.rs
+2 −2 src/appendix-01-keywords.md
+1 −5 src/ch04-02-references-and-borrowing.md
+10 −10 src/ch20-03-graceful-shutdown-and-cleanup.md
+1 −8 tools/src/bin/remove_markup.rs
2 changes: 1 addition & 1 deletion src/doc/embedded-book
Submodule embedded-book updated 1 files
+5 −0 .gitattributes
2 changes: 1 addition & 1 deletion src/doc/reference
2 changes: 1 addition & 1 deletion src/doc/rust-by-example
55 changes: 18 additions & 37 deletions src/librustc_typeck/check/_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,30 +50,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {

self.warn_arms_when_scrutinee_diverges(arms, match_src);

// Otherwise, we have to union together the types that the
// arms produce and so forth.
let scrut_diverges = self.diverges.get();
self.diverges.set(Diverges::Maybe);
// Otherwise, we have to union together the types that the arms produce and so forth.
let scrut_diverges = self.diverges.replace(Diverges::Maybe);

// rust-lang/rust#55810: Typecheck patterns first (via eager
// collection into `Vec`), so we get types for all bindings.
let all_arm_pats_diverge: Vec<_> = arms
.iter()
.map(|arm| {
let mut all_pats_diverge = Diverges::WarnedAlways;
self.diverges.set(Diverges::Maybe);
self.check_pat_top(&arm.pat, scrut_ty, Some(scrut.span), true);
all_pats_diverge &= self.diverges.get();

// As discussed with @eddyb, this is for disabling unreachable_code
// warnings on patterns (they're now subsumed by unreachable_patterns
// warnings).
match all_pats_diverge {
Diverges::Maybe => Diverges::Maybe,
Diverges::Always { .. } | Diverges::WarnedAlways => Diverges::WarnedAlways,
}
})
.collect();
// #55810: Type check patterns first so we get types for all bindings.
for arm in arms {
self.check_pat_top(&arm.pat, scrut_ty, Some(scrut.span), true);
}

// Now typecheck the blocks.
//
Expand Down Expand Up @@ -104,19 +87,19 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
CoerceMany::with_coercion_sites(coerce_first, arms)
};

let mut other_arms = vec![]; // used only for diagnostics
let mut other_arms = vec![]; // Used only for diagnostics.
let mut prior_arm_ty = None;
for (i, (arm, pats_diverge)) in arms.iter().zip(all_arm_pats_diverge).enumerate() {
for (i, arm) in arms.iter().enumerate() {
if let Some(g) = &arm.guard {
self.diverges.set(pats_diverge);
self.diverges.set(Diverges::Maybe);
match g {
hir::Guard::If(e) => {
self.check_expr_has_type_or_error(e, tcx.types.bool, |_| {})
}
};
}

self.diverges.set(pats_diverge);
self.diverges.set(Diverges::Maybe);
let arm_ty = if source_if
&& if_no_else
&& i != 0
Expand Down Expand Up @@ -200,16 +183,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
arms: &'tcx [hir::Arm<'tcx>],
source: hir::MatchSource,
) {
if self.diverges.get().is_always() {
use hir::MatchSource::*;
let msg = match source {
IfDesugar { .. } | IfLetDesugar { .. } => "block in `if` expression",
WhileDesugar { .. } | WhileLetDesugar { .. } => "block in `while` expression",
_ => "arm",
};
for arm in arms {
self.warn_if_unreachable(arm.body.hir_id, arm.body.span, msg);
}
use hir::MatchSource::*;
let msg = match source {
IfDesugar { .. } | IfLetDesugar { .. } => "block in `if` expression",
WhileDesugar { .. } | WhileLetDesugar { .. } => "block in `while` expression",
_ => "arm",
};
for arm in arms {
self.warn_if_unreachable(arm.body.hir_id, arm.body.span, msg);
}
}

Expand Down
6 changes: 2 additions & 4 deletions src/librustc_typeck/check/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,10 +165,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
}

// Hide the outer diverging and has_errors flags.
let old_diverges = self.diverges.get();
let old_has_errors = self.has_errors.get();
self.diverges.set(Diverges::Maybe);
self.has_errors.set(false);
let old_diverges = self.diverges.replace(Diverges::Maybe);
let old_has_errors = self.has_errors.replace(false);

let ty = self.check_expr_kind(expr, expected, needs);

Expand Down
7 changes: 2 additions & 5 deletions src/librustc_typeck/check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4429,10 +4429,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
self.warn_if_unreachable(stmt.hir_id, stmt.span, "statement");

// Hide the outer diverging and `has_errors` flags.
let old_diverges = self.diverges.get();
let old_has_errors = self.has_errors.get();
self.diverges.set(Diverges::Maybe);
self.has_errors.set(false);
let old_diverges = self.diverges.replace(Diverges::Maybe);
let old_has_errors = self.has_errors.replace(false);

match stmt.kind {
hir::StmtKind::Local(ref l) => {
Expand All @@ -4442,7 +4440,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
hir::StmtKind::Item(_) => {}
hir::StmtKind::Expr(ref expr) => {
// Check with expected type of `()`.

self.check_expr_has_type_or_error(&expr, self.tcx.mk_unit(), |err| {
self.suggest_semicolon_at_end(expr.span, err);
});
Expand Down
2 changes: 1 addition & 1 deletion src/tools/clippy