diff --git a/Cargo.lock b/Cargo.lock index 7e13570834e8d..4fd08ddef8ca0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3554,7 +3554,6 @@ dependencies = [ "crossbeam-utils", "libc", "libz-sys", - "memchr", "proc-macro2", "quote", "rand_core 0.5.1", diff --git a/src/tools/clippy/clippy_lints/src/crate_in_macro_def.rs b/src/tools/clippy/clippy_lints/src/crate_in_macro_def.rs index 454ec23388af9..f6ec8fe7edc19 100644 --- a/src/tools/clippy/clippy_lints/src/crate_in_macro_def.rs +++ b/src/tools/clippy/clippy_lints/src/crate_in_macro_def.rs @@ -110,14 +110,14 @@ fn contains_unhygienic_crate_reference(tts: &TokenStream) -> Option { fn is_crate_keyword(tt: &TokenTree) -> Option { if_chain! { - if let TokenTree::Token(Token { kind: TokenKind::Ident(symbol, _), span }, _) = tt; + if let TokenTree::Token(Token { kind: TokenKind::Ident(symbol, _), span }) = tt; if symbol.as_str() == "crate"; then { Some(*span) } else { None } } } fn is_token(tt: &TokenTree, kind: &TokenKind) -> bool { - if let TokenTree::Token(Token { kind: other, .. }, _) = tt { + if let TokenTree::Token(Token { kind: other, .. }) = tt { kind == other } else { false diff --git a/src/tools/clippy/clippy_lints/src/matches/mod.rs b/src/tools/clippy/clippy_lints/src/matches/mod.rs index e9e13aece18f6..b638f27160282 100644 --- a/src/tools/clippy/clippy_lints/src/matches/mod.rs +++ b/src/tools/clippy/clippy_lints/src/matches/mod.rs @@ -1112,7 +1112,7 @@ fn span_contains_cfg(cx: &LateContext<'_>, s: Span) -> bool { let mut pos = 0usize; let mut iter = tokenize(&snip).map(|t| { let start = pos; - pos += t.len as usize; + pos += t.len; (t.kind, start..pos) }); diff --git a/src/tools/clippy/clippy_lints/src/methods/suspicious_map.rs b/src/tools/clippy/clippy_lints/src/methods/suspicious_map.rs index 9c3375bf35e7d..18ded291915e1 100644 --- a/src/tools/clippy/clippy_lints/src/methods/suspicious_map.rs +++ b/src/tools/clippy/clippy_lints/src/methods/suspicious_map.rs @@ -12,8 +12,7 @@ pub fn check<'tcx>(cx: &LateContext<'tcx>, expr: &hir::Expr<'_>, count_recv: &hi if_chain! { if is_trait_method(cx, count_recv, sym::Iterator); let closure = expr_or_init(cx, map_arg); - if let Some(def_id) = cx.tcx.hir().opt_local_def_id(closure.hir_id); - if let Some(body_id) = cx.tcx.hir().maybe_body_owned_by(def_id); + if let Some(body_id) = cx.tcx.hir().maybe_body_owned_by(closure.hir_id); let closure_body = cx.tcx.hir().body(body_id); if !cx.typeck_results().expr_ty(&closure_body.value).is_unit(); then { diff --git a/src/tools/clippy/clippy_lints/src/undocumented_unsafe_blocks.rs b/src/tools/clippy/clippy_lints/src/undocumented_unsafe_blocks.rs index d2e675a783eaa..04f16fd2161c5 100644 --- a/src/tools/clippy/clippy_lints/src/undocumented_unsafe_blocks.rs +++ b/src/tools/clippy/clippy_lints/src/undocumented_unsafe_blocks.rs @@ -345,7 +345,7 @@ fn text_has_safety_comment(src: &str, line_starts: &[BytePos], offset: usize) -> if line.starts_with("/*") { let src = src[line_start..line_starts.last().unwrap().to_usize() - offset].trim_start(); let mut tokens = tokenize(src); - return src[..tokens.next().unwrap().len as usize] + return src[..tokens.next().unwrap().len] .to_ascii_uppercase() .contains("SAFETY:") && tokens.all(|t| t.kind == TokenKind::Whitespace); diff --git a/src/tools/clippy/clippy_lints/src/utils/author.rs b/src/tools/clippy/clippy_lints/src/utils/author.rs index c0726868f77e2..bbb04c9945a09 100644 --- a/src/tools/clippy/clippy_lints/src/utils/author.rs +++ b/src/tools/clippy/clippy_lints/src/utils/author.rs @@ -138,7 +138,7 @@ impl<'tcx> LateLintPass<'tcx> for Author { fn check_item(cx: &LateContext<'_>, hir_id: HirId) { let hir = cx.tcx.hir(); - if let Some(body_id) = hir.maybe_body_owned_by(hir_id.expect_owner()) { + if let Some(body_id) = hir.maybe_body_owned_by(hir_id) { check_node(cx, hir_id, |v| { v.expr(&v.bind("expr", &hir.body(body_id).value)); }); diff --git a/src/tools/clippy/clippy_utils/src/hir_utils.rs b/src/tools/clippy/clippy_utils/src/hir_utils.rs index 1834e2a2de872..eaf260ddfb832 100644 --- a/src/tools/clippy/clippy_utils/src/hir_utils.rs +++ b/src/tools/clippy/clippy_utils/src/hir_utils.rs @@ -141,7 +141,7 @@ impl HirEqInterExpr<'_, '_, '_> { let mut left_pos = 0; let left = tokenize(&left) .map(|t| { - let end = left_pos + t.len as usize; + let end = left_pos + t.len; let s = &left[left_pos..end]; left_pos = end; (t, s) @@ -156,7 +156,7 @@ impl HirEqInterExpr<'_, '_, '_> { let mut right_pos = 0; let right = tokenize(&right) .map(|t| { - let end = right_pos + t.len as usize; + let end = right_pos + t.len; let s = &right[right_pos..end]; right_pos = end; (t, s) diff --git a/src/tools/clippy/clippy_utils/src/lib.rs b/src/tools/clippy/clippy_utils/src/lib.rs index 7493a8685dff8..34a1cdaf1d52a 100644 --- a/src/tools/clippy/clippy_utils/src/lib.rs +++ b/src/tools/clippy/clippy_utils/src/lib.rs @@ -968,7 +968,7 @@ pub fn can_move_expr_to_closure<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<' } }, ExprKind::Closure { .. } => { - let closure_id = self.cx.tcx.hir().local_def_id(e.hir_id); + let closure_id = self.cx.tcx.hir().local_def_id(e.hir_id).to_def_id(); for capture in self.cx.typeck_results().closure_min_captures_flattened(closure_id) { let local_id = match capture.place.base { PlaceBase::Local(id) => id, @@ -1353,7 +1353,7 @@ pub fn is_integer_const(cx: &LateContext<'_>, e: &Expr<'_>, value: u128) -> bool if is_integer_literal(e, value) { return true; } - let enclosing_body = cx.tcx.hir().enclosing_body_owner(e.hir_id); + let enclosing_body = cx.tcx.hir().local_def_id(cx.tcx.hir().enclosing_body_owner(e.hir_id)); if let Some((Constant::Int(v), _)) = constant(cx, cx.tcx.typeck(enclosing_body), e) { return value == v; } diff --git a/src/tools/rustc-workspace-hack/Cargo.toml b/src/tools/rustc-workspace-hack/Cargo.toml index 00281bf8f014a..22c2d28d9f693 100644 --- a/src/tools/rustc-workspace-hack/Cargo.toml +++ b/src/tools/rustc-workspace-hack/Cargo.toml @@ -71,7 +71,7 @@ features = [ ] [dependencies] -bstr = { version = "0.2.17", features = ["default"] } +bstr = { version = "0.2.13", features = ["default"] } byteorder = { version = "1", features = ['default', 'std'] } clap = { version = "3.1.1", features = ["derive", "clap_derive"]} curl-sys = { version = "0.4.13", features = ["http2", "libnghttp2-sys"], optional = true } @@ -79,12 +79,8 @@ crossbeam-utils = { version = "0.8.0", features = ["nightly"] } libc = { version = "0.2.79", features = ["align"] } # Ensure default features of libz-sys, which are disabled in some scenarios. libz-sys = { version = "1.1.2" } - -# looks like the only user of deprecated `use_std` feature is `combine`, so this -# can be removed if/when https://github.com/Marwes/combine/pull/348 be merged and released. -memchr = { version = "2.5", features = ["std", "use_std"] } # same for regex -regex = { version = "1.5.6" } +regex = { version = "1.5.5" } proc-macro2 = { version = "1", features = ["default"] } quote = { version = "1", features = ["default"] } rand_core_0_5 = { package = "rand_core", version = "0.5.1", features = ["getrandom", "alloc", "std"] } diff --git a/src/tools/rustfmt/src/macros.rs b/src/tools/rustfmt/src/macros.rs index 3a641fab5d647..f4b2bcf281577 100644 --- a/src/tools/rustfmt/src/macros.rs +++ b/src/tools/rustfmt/src/macros.rs @@ -13,7 +13,7 @@ use std::collections::HashMap; use std::panic::{catch_unwind, AssertUnwindSafe}; use rustc_ast::token::{BinOpToken, Delimiter, Token, TokenKind}; -use rustc_ast::tokenstream::{Cursor, TokenStream, TokenTree}; +use rustc_ast::tokenstream::{Cursor, Spacing, TokenStream, TokenTree}; use rustc_ast::{ast, ptr}; use rustc_ast_pretty::pprust; use rustc_span::{ @@ -682,7 +682,7 @@ struct MacroArgParser { fn last_tok(tt: &TokenTree) -> Token { match *tt { - TokenTree::Token(ref t, _) => t.clone(), + TokenTree::Token(ref t) => t.clone(), TokenTree::Delimited(delim_span, delim, _) => Token { kind: TokenKind::CloseDelim(delim), span: delim_span.close, @@ -737,13 +737,10 @@ impl MacroArgParser { fn add_meta_variable(&mut self, iter: &mut Cursor) -> Option<()> { match iter.next() { - Some(TokenTree::Token( - Token { - kind: TokenKind::Ident(name, _), - .. - }, - _, - )) => { + Some(TokenTree::Token(Token { + kind: TokenKind::Ident(name, _), + .. + })) => { self.result.push(ParsedMacroArg { kind: MacroArgKind::MetaVariable(name, self.buf.clone()), }); @@ -780,30 +777,21 @@ impl MacroArgParser { } match tok { - TokenTree::Token( - Token { - kind: TokenKind::BinOp(BinOpToken::Plus), - .. - }, - _, - ) - | TokenTree::Token( - Token { - kind: TokenKind::Question, - .. - }, - _, - ) - | TokenTree::Token( - Token { - kind: TokenKind::BinOp(BinOpToken::Star), - .. - }, - _, - ) => { + TokenTree::Token(Token { + kind: TokenKind::BinOp(BinOpToken::Plus), + .. + }) + | TokenTree::Token(Token { + kind: TokenKind::Question, + .. + }) + | TokenTree::Token(Token { + kind: TokenKind::BinOp(BinOpToken::Star), + .. + }) => { break; } - TokenTree::Token(ref t, _) => { + TokenTree::Token(ref t) => { buffer.push_str(&pprust::token_to_string(t)); } _ => return None, @@ -871,13 +859,10 @@ impl MacroArgParser { while let Some(tok) = iter.next() { match tok { - TokenTree::Token( - Token { - kind: TokenKind::Dollar, - span, - }, - _, - ) => { + TokenTree::Token(Token { + kind: TokenKind::Dollar, + span, + }) => { // We always want to add a separator before meta variables. if !self.buf.is_empty() { self.add_separator(); @@ -890,16 +875,13 @@ impl MacroArgParser { span, }; } - TokenTree::Token( - Token { - kind: TokenKind::Colon, - .. - }, - _, - ) if self.is_meta_var => { + TokenTree::Token(Token { + kind: TokenKind::Colon, + .. + }) if self.is_meta_var => { self.add_meta_variable(&mut iter)?; } - TokenTree::Token(ref t, _) => self.update_buffer(t), + TokenTree::Token(ref t) => self.update_buffer(t), TokenTree::Delimited(_delimited_span, delimited, ref tts) => { if !self.buf.is_empty() { if next_space(&self.last_tok.kind) == SpaceState::Always { @@ -1141,15 +1123,12 @@ impl MacroParser { TokenTree::Token(..) => return None, TokenTree::Delimited(delimited_span, d, _) => (delimited_span.open.lo(), d), }; - let args = TokenStream::new(vec![tok]); + let args = TokenStream::new(vec![(tok, Spacing::Joint)]); match self.toks.next()? { - TokenTree::Token( - Token { - kind: TokenKind::FatArrow, - .. - }, - _, - ) => {} + TokenTree::Token(Token { + kind: TokenKind::FatArrow, + .. + }) => {} _ => return None, } let (mut hi, body, whole_body) = match self.toks.next()? { @@ -1168,13 +1147,10 @@ impl MacroParser { ) } }; - if let Some(TokenTree::Token( - Token { - kind: TokenKind::Semi, - span, - }, - _, - )) = self.toks.look_ahead(0) + if let Some(TokenTree::Token(Token { + kind: TokenKind::Semi, + span, + })) = self.toks.look_ahead(0) { hi = span.hi(); self.toks.next(); diff --git a/src/tools/x/src/main.rs b/src/tools/x/src/main.rs index 9187c3551d7de..57d548f313dae 100644 --- a/src/tools/x/src/main.rs +++ b/src/tools/x/src/main.rs @@ -41,9 +41,9 @@ fn python() -> &'static str { } else if python2 { PYTHON2 } else { - // Python was not found on path, so exit - eprintln!("Unable to find python in your PATH. Please check it is installed."); - process::exit(1); + // We would have returned early if we found that python is installed ... + // maybe this should panic with an error instead? + PYTHON } }