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 10 pull requests #64647

Closed
wants to merge 25 commits into from
Closed
Changes from 2 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
612ef5f
add new tests for re_rebalance_coherence
nikomatsakis Sep 12, 2019
e69d1b6
change to check-pass
nikomatsakis Sep 13, 2019
6e5ada4
Add cmp::{min_by, min_by_key, max_by, max_by_key}
timvermeulen Aug 31, 2019
7217591
Simplify Iterator::{min_by, max_by} using cmp::{min_by, max_by}
timvermeulen Sep 14, 2019
194d357
Document `From` trait for `LhsExpr`
crgl Sep 3, 2019
3f004a1
Fix re-rebalance coherence implementation for fundamental types
weiznich Sep 17, 2019
a9c38d9
Add more tests
weiznich Sep 18, 2019
31b3012
Split line to fix tidy
weiznich Sep 18, 2019
8112f71
rustbuild: Turn down compression on exe installers
alexcrichton Sep 19, 2019
1ab5593
factor out pluralisation remains after #64280
Sep 19, 2019
fde8cfe
rustbuild: Turn down compression on msi installers
alexcrichton Sep 19, 2019
255dd3f
rustbuild: Improve output of `dist` step
alexcrichton Sep 19, 2019
3db2c13
Add Compatibility Notes to RELEASES.md for 1.38.0
XAMPPRocky Sep 19, 2019
c3140ba
remove the extra comma after the match arm
Sep 20, 2019
9f374da
Exempt extern "Rust" from improper_ctypes
cuviper Sep 20, 2019
14e672c
Rollup merge of #64047 - timvermeulen:cmp_min_max_by, r=cuviper
tmandry Sep 21, 2019
73da248
Rollup merge of #64136 - crgl:doc-from-parser-lhs, r=Centril
tmandry Sep 21, 2019
b9412b0
Rollup merge of #64342 - glorv:master, r=varkor
tmandry Sep 21, 2019
4ca6a8d
Rollup merge of #64546 - weiznich:bugfix/rfc-2451-rerebalance-tests, …
tmandry Sep 21, 2019
6b642fd
Rollup merge of #64615 - alexcrichton:smaller-exe, r=Mark-Simulacrum
tmandry Sep 21, 2019
8965cb7
Rollup merge of #64617 - alexcrichton:smaller-msi, r=Mark-Simulacrum
tmandry Sep 21, 2019
a5c7e68
Rollup merge of #64618 - alexcrichton:improve-dist-output, r=Mark-Sim…
tmandry Sep 21, 2019
558f84c
Rollup merge of #64621 - XAMPPRocky:relnotes, r=Mark-Simulacrum
tmandry Sep 21, 2019
8ac0864
Rollup merge of #64632 - guanqun:patch-1, r=jonas-schievink
tmandry Sep 21, 2019
4cef643
Rollup merge of #64641 - cuviper:extern-rust-ctypes, r=estebank
tmandry Sep 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
4 changes: 2 additions & 2 deletions src/librustc/lint/builtin.rs
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
use crate::lint::{LintPass, LateLintPass, LintArray};
use crate::middle::stability;
use crate::session::Session;
use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use syntax::ast;
use syntax::source_map::Span;
use syntax::symbol::Symbol;
@@ -524,7 +524,7 @@ pub(crate) fn add_elided_lifetime_in_path_suggestion(
};
db.span_suggestion(
replace_span,
&format!("indicate the anonymous lifetime{}", if n >= 2 { "s" } else { "" }),
&format!("indicate the anonymous lifetime{}", pluralise!(n)),
suggestion,
Applicability::MachineApplicable
);
4 changes: 2 additions & 2 deletions src/librustc/middle/resolve_lifetime.rs
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ use crate::ty::{self, DefIdTree, GenericParamDefKind, TyCtxt};
use crate::rustc::lint;
use crate::session::Session;
use crate::util::nodemap::{DefIdMap, FxHashMap, FxHashSet, HirIdMap, HirIdSet};
use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use rustc_macros::HashStable;
use std::borrow::Cow;
use std::cell::Cell;
@@ -3047,7 +3047,7 @@ pub fn report_missing_lifetime_specifiers(
span,
E0106,
"missing lifetime specifier{}",
if count > 1 { "s" } else { "" }
pluralise!(count)
)
}

4 changes: 2 additions & 2 deletions src/librustc/traits/error_reporting.rs
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ use crate::ty::subst::Subst;
use crate::ty::SubtypePredicate;
use crate::util::nodemap::{FxHashMap, FxHashSet};

use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use std::fmt;
use syntax::ast;
use syntax::symbol::{sym, kw};
@@ -1214,7 +1214,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
_ => format!("{} {}argument{}",
arg_length,
if distinct && arg_length > 1 { "distinct " } else { "" },
if arg_length == 1 { "" } else { "s" }),
pluralise!(arg_length))
}
};

2 changes: 1 addition & 1 deletion src/librustc/ty/error.rs
Original file line number Diff line number Diff line change
@@ -196,7 +196,7 @@ impl<'tcx> ty::TyS<'tcx> {
let n = tcx.lift_to_global(&n).unwrap();
match n.try_eval_usize(tcx, ty::ParamEnv::empty()) {
Some(n) => {
format!("array of {} element{}", n, if n != 1 { "s" } else { "" }).into()
format!("array of {} element{}", n, pluralise!(n)).into()
}
None => "array".into(),
}
22 changes: 15 additions & 7 deletions src/librustc_lint/unused.rs
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ use lint::{LintPass, EarlyLintPass, LateLintPass};

use syntax::ast;
use syntax::attr;
use syntax::errors::Applicability;
use syntax::errors::{Applicability, pluralise};
use syntax::feature_gate::{AttributeType, BuiltinAttribute, BUILTIN_ATTRIBUTE_MAP};
use syntax::print::pprust;
use syntax::symbol::{kw, sym};
@@ -48,7 +48,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
}

let ty = cx.tables.expr_ty(&expr);
let type_permits_lack_of_use = check_must_use_ty(cx, ty, &expr, s.span, "", "", false);
let type_permits_lack_of_use = check_must_use_ty(cx, ty, &expr, s.span, "", "", 1);

let mut fn_warned = false;
let mut op_warned = false;
@@ -135,21 +135,21 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
span: Span,
descr_pre: &str,
descr_post: &str,
plural: bool,
plural_len: usize,
) -> bool {
if ty.is_unit() || cx.tcx.is_ty_uninhabited_from(
cx.tcx.hir().get_module_parent(expr.hir_id), ty)
{
return true;
}

let plural_suffix = if plural { "s" } else { "" };
let plural_suffix = pluralise!(plural_len);

match ty.sty {
ty::Adt(..) if ty.is_box() => {
let boxed_ty = ty.boxed_ty();
let descr_pre = &format!("{}boxed ", descr_pre);
check_must_use_ty(cx, boxed_ty, expr, span, descr_pre, descr_post, plural)
check_must_use_ty(cx, boxed_ty, expr, span, descr_pre, descr_post, plural_len)
}
ty::Adt(def, _) => {
check_must_use_def(cx, def.did, span, descr_pre, descr_post)
@@ -202,7 +202,15 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
for (i, ty) in tys.iter().map(|k| k.expect_ty()).enumerate() {
let descr_post = &format!(" in tuple element {}", i);
let span = *spans.get(i).unwrap_or(&span);
if check_must_use_ty(cx, ty, expr, span, descr_pre, descr_post, plural) {
if check_must_use_ty(
cx,
ty,
expr,
span,
descr_pre,
descr_post,
plural_len
) {
has_emitted = true;
}
}
@@ -216,7 +224,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
descr_pre,
plural_suffix,
);
check_must_use_ty(cx, ty, expr, span, descr_pre, descr_post, true)
check_must_use_ty(cx, ty, expr, span, descr_pre, descr_post, n as usize + 1)
}
// Otherwise, we don't lint, to avoid false positives.
_ => false,
4 changes: 3 additions & 1 deletion src/librustc_resolve/check_unused.rs
Original file line number Diff line number Diff line change
@@ -26,6 +26,8 @@
use crate::Resolver;
use crate::resolve_imports::ImportDirectiveSubclass;

use errors::pluralise;

use rustc::util::nodemap::NodeMap;
use rustc::{lint, ty};
use rustc_data_structures::fx::FxHashSet;
@@ -295,7 +297,7 @@ impl Resolver<'_> {
}).collect::<Vec<String>>();
span_snippets.sort();
let msg = format!("unused import{}{}",
if len > 1 { "s" } else { "" },
pluralise!(len),
if !span_snippets.is_empty() {
format!(": {}", span_snippets.join(", "))
} else {
4 changes: 2 additions & 2 deletions src/librustc_resolve/resolve_imports.rs
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ use crate::{Resolver, ResolutionError, Segment, ModuleKind};
use crate::{names_to_string, module_to_string};
use crate::diagnostics::Suggestion;

use errors::Applicability;
use errors::{Applicability, pluralise};

use rustc_data_structures::ptr_key::PtrKey;
use rustc::ty;
@@ -728,7 +728,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> {

let msg = format!(
"unresolved import{} {}",
if paths.len() > 1 { "s" } else { "" },
pluralise!(paths.len()),
paths.join(", "),
);

2 changes: 1 addition & 1 deletion src/librustc_typeck/astconv.rs
Original file line number Diff line number Diff line change
@@ -1346,7 +1346,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
span,
E0191,
"the value of the associated type{} {} must be specified",
if associated_types.len() == 1 { "" } else { "s" },
pluralise!(associated_types.len()),
names,
);
let (suggest, potential_assoc_types_spans) =
4 changes: 2 additions & 2 deletions src/librustc_typeck/check/expr.rs
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ use crate::util::common::ErrorReported;
use crate::util::nodemap::FxHashMap;
use crate::astconv::AstConv as _;

use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use syntax::ast;
use syntax::symbol::{Symbol, kw, sym};
use syntax::source_map::Span;
@@ -1178,7 +1178,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {

struct_span_err!(tcx.sess, span, E0063,
"missing field{} {}{} in initializer of `{}`",
if remaining_fields.len() == 1 { "" } else { "s" },
pluralise!(remaining_fields.len()),
remaining_fields_names,
truncated_fields_error,
adt_ty)
4 changes: 2 additions & 2 deletions src/librustc_typeck/check/method/suggest.rs
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ use crate::check::FnCtxt;
use crate::middle::lang_items::FnOnceTraitLangItem;
use crate::namespace::Namespace;
use crate::util::nodemap::FxHashSet;
use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use rustc::hir::{self, ExprKind, Node, QPath};
use rustc::hir::def::{Res, DefKind};
use rustc::hir::def_id::{CRATE_DEF_INDEX, LOCAL_CRATE, DefId};
@@ -560,7 +560,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
let help = format!("{an}other candidate{s} {were} found in the following \
trait{s}, perhaps add a `use` for {one_of_them}:",
an = if candidates.len() == 1 {"an" } else { "" },
s = if candidates.len() == 1 { "" } else { "s" },
s = pluralise!(candidates.len()),
were = if candidates.len() == 1 { "was" } else { "were" },
one_of_them = if candidates.len() == 1 {
"it"
4 changes: 2 additions & 2 deletions src/librustc_typeck/check/mod.rs
Original file line number Diff line number Diff line change
@@ -88,7 +88,7 @@ pub mod intrinsic;
mod op;

use crate::astconv::{AstConv, PathSeg};
use errors::{Applicability, DiagnosticBuilder, DiagnosticId};
use errors::{Applicability, DiagnosticBuilder, DiagnosticId, pluralise};
use rustc::hir::{self, ExprKind, GenericArg, ItemKind, Node, PatKind, QPath};
use rustc::hir::def::{CtorOf, Res, DefKind};
use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE};
@@ -4935,5 +4935,5 @@ fn fatally_break_rust(sess: &Session) {
}

fn potentially_plural_count(count: usize, word: &str) -> String {
format!("{} {}{}", count, word, if count == 1 { "" } else { "s" })
format!("{} {}{}", count, word, pluralise!(count))
}
14 changes: 7 additions & 7 deletions src/librustc_typeck/check/pat.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::check::FnCtxt;
use crate::util::nodemap::FxHashMap;
use errors::{Applicability, DiagnosticBuilder};
use errors::{Applicability, DiagnosticBuilder, pluralise};
use rustc::hir::{self, PatKind, Pat, HirId};
use rustc::hir::def::{Res, DefKind, CtorKind};
use rustc::hir::pat_util::EnumerateAndAdjustIterator;
@@ -684,8 +684,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
}

fn e0023(&self, pat_span: Span, res: Res, subpats: &'tcx [P<Pat>], fields: &[ty::FieldDef]) {
let subpats_ending = if subpats.len() == 1 { "" } else { "s" };
let fields_ending = if fields.len() == 1 { "" } else { "s" };
let subpats_ending = pluralise!(subpats.len());
let fields_ending = pluralise!(fields.len());
let res_span = self.tcx.def_span(res.def_id());
struct_span_err!(
self.tcx.sess,
@@ -1103,10 +1103,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
E0527,
"pattern requires {} element{} but array has {}",
min_len,
if min_len != 1 { "s" } else { "" },
pluralise!(min_len),
size,
)
.span_label(span, format!("expected {} element{}", size, if size != 1 { "s" } else { "" }))
.span_label(span, format!("expected {} element{}", size, pluralise!(size)))
.emit();
}

@@ -1117,14 +1117,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
E0528,
"pattern requires at least {} element{} but array has {}",
min_len,
if min_len != 1 { "s" } else { "" },
pluralise!(min_len),
size,
).span_label(
span,
format!(
"pattern cannot match array of {} element{}",
size,
if size != 1 { "s" } else { "" },
pluralise!(size),
),
).emit();
}
5 changes: 3 additions & 2 deletions src/libsyntax/ext/tt/transcribe.rs
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@ use crate::tokenstream::{DelimSpan, TokenStream, TokenTree, TreeAndJoint};

use smallvec::{smallvec, SmallVec};

use errors::pluralise;
use rustc_data_structures::fx::FxHashMap;
use rustc_data_structures::sync::Lrc;
use syntax_pos::hygiene::{ExpnId, Transparency};
@@ -348,10 +349,10 @@ impl LockstepIterSize {
"meta-variable `{}` repeats {} time{}, but `{}` repeats {} time{}",
l_id,
l_len,
if l_len != 1 { "s" } else { "" },
pluralise!(l_len),
r_id,
r_len,
if r_len != 1 { "s" } else { "" },
pluralise!(r_len),
);
LockstepIterSize::Contradiction(msg)
}
8 changes: 4 additions & 4 deletions src/libsyntax/parse/diagnostics.rs
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ use crate::ptr::P;
use crate::symbol::{kw, sym};
use crate::ThinVec;
use crate::util::parser::AssocOp;
use errors::{Applicability, DiagnosticBuilder, DiagnosticId};
use errors::{Applicability, DiagnosticBuilder, DiagnosticId, pluralise};
use rustc_data_structures::fx::FxHashSet;
use syntax_pos::{Span, DUMMY_SP, MultiSpan, SpanSnippetError};
use log::{debug, trace};
@@ -532,15 +532,15 @@ impl<'a> Parser<'a> {
self.eat_to_tokens(&[&end]);
let span = lo.until(self.token.span);

let plural = number_of_gt > 1 || number_of_shr >= 1;
let total_num_of_gt = number_of_gt + number_of_shr * 2;
self.diagnostic()
.struct_span_err(
span,
&format!("unmatched angle bracket{}", if plural { "s" } else { "" }),
&format!("unmatched angle bracket{}", pluralise!(total_num_of_gt)),
)
.span_suggestion(
span,
&format!("remove extra angle bracket{}", if plural { "s" } else { "" }),
&format!("remove extra angle bracket{}", pluralise!(total_num_of_gt)),
String::new(),
Applicability::MachineApplicable,
)
7 changes: 3 additions & 4 deletions src/libsyntax/parse/parser/path.rs
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ use crate::symbol::kw;

use std::mem;
use log::debug;
use errors::{Applicability};
use errors::{Applicability, pluralise};

/// Specifies how to parse a path.
#[derive(Copy, Clone, PartialEq)]
@@ -347,20 +347,19 @@ impl<'a> Parser<'a> {
let span = lo.with_hi(
lo.lo() + BytePos(snapshot.unmatched_angle_bracket_count)
);
let plural = snapshot.unmatched_angle_bracket_count > 1;
self.diagnostic()
.struct_span_err(
span,
&format!(
"unmatched angle bracket{}",
if plural { "s" } else { "" }
pluralise!(snapshot.unmatched_angle_bracket_count)
),
)
.span_suggestion(
span,
&format!(
"remove extra angle bracket{}",
if plural { "s" } else { "" }
pluralise!(snapshot.unmatched_angle_bracket_count)
),
String::new(),
Applicability::MachineApplicable,
6 changes: 3 additions & 3 deletions src/libsyntax/parse/parser/ty.rs
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ use crate::symbol::{kw};

use rustc_target::spec::abi::Abi;

use errors::{Applicability};
use errors::{Applicability, pluralise};

/// Returns `true` if `IDENT t` can start a type -- `IDENT::a::b`, `IDENT<u8, u8>`,
/// `IDENT<<u8 as Trait>::AssocTy>`.
@@ -397,7 +397,7 @@ impl<'a> Parser<'a> {
}

if !negative_bounds.is_empty() || was_negative {
let plural = negative_bounds.len() > 1;
let negative_bounds_len = negative_bounds.len();
let last_span = negative_bounds.last().map(|sp| *sp);
let mut err = self.struct_span_err(
negative_bounds,
@@ -420,7 +420,7 @@ impl<'a> Parser<'a> {
}
err.span_suggestion_hidden(
bound_list,
&format!("remove the trait bound{}", if plural { "s" } else { "" }),
&format!("remove the trait bound{}", pluralise!(negative_bounds_len)),
new_bound_list,
Applicability::MachineApplicable,
);
Loading