mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-18 18:04:13 +00:00
Auto merge of #114236 - fee1-dead-contrib:rollup-m92j7q1, r=fee1-dead
Rollup of 3 pull requests Successful merges: - #112151 (Clarify behavior of inclusive bounds in BTreeMap::{lower,upper}_bound) - #113512 (Updated lines doc to include trailing carriage return note) - #114203 (Effects: don't print `host` param in diagnostics) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
4c9ac1e93b
@ -17,6 +17,7 @@ use rustc_hir::LangItem;
|
||||
use rustc_session::config::TrimmedDefPaths;
|
||||
use rustc_session::cstore::{ExternCrate, ExternCrateSource};
|
||||
use rustc_session::Limit;
|
||||
use rustc_span::sym;
|
||||
use rustc_span::symbol::{kw, Ident, Symbol};
|
||||
use rustc_span::FileNameDisplayPreference;
|
||||
use rustc_target::abi::Size;
|
||||
@ -2017,11 +2018,37 @@ impl<'tcx> Printer<'tcx> for FmtPrinter<'_, 'tcx> {
|
||||
) -> Result<Self::Path, Self::Error> {
|
||||
self = print_prefix(self)?;
|
||||
|
||||
if args.first().is_some() {
|
||||
let tcx = self.tcx;
|
||||
|
||||
let args = args.iter().copied();
|
||||
|
||||
let args: Vec<_> = if !tcx.sess.verbose() {
|
||||
// skip host param as those are printed as `~const`
|
||||
args.filter(|arg| match arg.unpack() {
|
||||
// FIXME(effects) there should be a better way than just matching the name
|
||||
GenericArgKind::Const(c)
|
||||
if tcx.features().effects
|
||||
&& matches!(
|
||||
c.kind(),
|
||||
ty::ConstKind::Param(ty::ParamConst { name: sym::host, .. })
|
||||
) =>
|
||||
{
|
||||
false
|
||||
}
|
||||
_ => true,
|
||||
})
|
||||
.collect()
|
||||
} else {
|
||||
// If -Zverbose is passed, we should print the host parameter instead
|
||||
// of eating it.
|
||||
args.collect()
|
||||
};
|
||||
|
||||
if !args.is_empty() {
|
||||
if self.in_value {
|
||||
write!(self, "::")?;
|
||||
}
|
||||
self.generic_delimiters(|cx| cx.comma_sep(args.iter().cloned()))
|
||||
self.generic_delimiters(|cx| cx.comma_sep(args.into_iter()))
|
||||
} else {
|
||||
Ok(self)
|
||||
}
|
||||
|
@ -2543,6 +2543,8 @@ impl<K, V, A: Allocator + Clone> BTreeMap<K, V, A> {
|
||||
/// a.insert(2, "b");
|
||||
/// a.insert(3, "c");
|
||||
/// a.insert(4, "c");
|
||||
/// let cursor = a.lower_bound(Bound::Included(&2));
|
||||
/// assert_eq!(cursor.key(), Some(&2));
|
||||
/// let cursor = a.lower_bound(Bound::Excluded(&2));
|
||||
/// assert_eq!(cursor.key(), Some(&3));
|
||||
/// ```
|
||||
@ -2582,6 +2584,8 @@ impl<K, V, A: Allocator + Clone> BTreeMap<K, V, A> {
|
||||
/// a.insert(2, "b");
|
||||
/// a.insert(3, "c");
|
||||
/// a.insert(4, "c");
|
||||
/// let cursor = a.lower_bound_mut(Bound::Included(&2));
|
||||
/// assert_eq!(cursor.key(), Some(&2));
|
||||
/// let cursor = a.lower_bound_mut(Bound::Excluded(&2));
|
||||
/// assert_eq!(cursor.key(), Some(&3));
|
||||
/// ```
|
||||
@ -2634,6 +2638,8 @@ impl<K, V, A: Allocator + Clone> BTreeMap<K, V, A> {
|
||||
/// a.insert(2, "b");
|
||||
/// a.insert(3, "c");
|
||||
/// a.insert(4, "c");
|
||||
/// let cursor = a.upper_bound(Bound::Included(&3));
|
||||
/// assert_eq!(cursor.key(), Some(&3));
|
||||
/// let cursor = a.upper_bound(Bound::Excluded(&3));
|
||||
/// assert_eq!(cursor.key(), Some(&2));
|
||||
/// ```
|
||||
@ -2673,6 +2679,8 @@ impl<K, V, A: Allocator + Clone> BTreeMap<K, V, A> {
|
||||
/// a.insert(2, "b");
|
||||
/// a.insert(3, "c");
|
||||
/// a.insert(4, "c");
|
||||
/// let cursor = a.upper_bound_mut(Bound::Included(&3));
|
||||
/// assert_eq!(cursor.key(), Some(&3));
|
||||
/// let cursor = a.upper_bound_mut(Bound::Excluded(&3));
|
||||
/// assert_eq!(cursor.key(), Some(&2));
|
||||
/// ```
|
||||
|
@ -952,6 +952,10 @@ impl str {
|
||||
///
|
||||
/// Line terminators are not included in the lines returned by the iterator.
|
||||
///
|
||||
/// Note that any carriage return (`\r`) not immediately followed by a
|
||||
/// line feed (`\n`) does not split a line. These carriage returns are
|
||||
/// thereby included in the produced lines.
|
||||
///
|
||||
/// The final line ending is optional. A string that ends with a final line
|
||||
/// ending will return the same lines as an otherwise identical string
|
||||
/// without a final line ending.
|
||||
@ -961,18 +965,19 @@ impl str {
|
||||
/// Basic usage:
|
||||
///
|
||||
/// ```
|
||||
/// let text = "foo\r\nbar\n\nbaz\n";
|
||||
/// let text = "foo\r\nbar\n\nbaz\r";
|
||||
/// let mut lines = text.lines();
|
||||
///
|
||||
/// assert_eq!(Some("foo"), lines.next());
|
||||
/// assert_eq!(Some("bar"), lines.next());
|
||||
/// assert_eq!(Some(""), lines.next());
|
||||
/// assert_eq!(Some("baz"), lines.next());
|
||||
/// // Trailing carriage return is included in the last line
|
||||
/// assert_eq!(Some("baz\r"), lines.next());
|
||||
///
|
||||
/// assert_eq!(None, lines.next());
|
||||
/// ```
|
||||
///
|
||||
/// The final line ending isn't required:
|
||||
/// The final line does not require any ending:
|
||||
///
|
||||
/// ```
|
||||
/// let text = "foo\nbar\n\r\nbaz";
|
||||
|
@ -1,5 +1,4 @@
|
||||
// known-bug: #110395
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
pub trait Tr {
|
||||
@ -7,7 +6,7 @@ pub trait Tr {
|
||||
|
||||
fn b(&self) {
|
||||
().a()
|
||||
//FIXME ~^ ERROR the trait bound
|
||||
//~^ ERROR the trait bound
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
error[E0015]: cannot call non-const fn `<() as Tr>::a` in constant functions
|
||||
--> $DIR/default-method-body-is-const-same-trait-ck.rs:9:12
|
||||
error[E0277]: the trait bound `(): ~const Tr` is not satisfied
|
||||
--> $DIR/default-method-body-is-const-same-trait-ck.rs:8:12
|
||||
|
|
||||
LL | ().a()
|
||||
| ^^^
|
||||
| ^ the trait `~const Tr` is not implemented for `()`
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= help: the trait `Tr` is implemented for `()`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
Loading…
Reference in New Issue
Block a user