Auto merge of #61075 - Centril:rollup-1ugmcqu, r=Centril
Rollup of 7 pull requests Successful merges: - #60981 (Bump compiler-builtins to 0.1.15) - #61014 (Make -Zemit-artifact-notifications also emit the artifact type) - #61043 (Disable LLVM/debug assertions in gnu-full-bootstrap) - #61046 (Fix ICE with inconsistent macro matchers) - #61055 (Solaris CI: Build with dilos2 stable) - #61057 (Revert "Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators.") - #61073 (librustc_errors: Remove unused annotation style `OldSchoolNoteText`) Failed merges: r? @ghost
This commit is contained in:
commit
f688ba6089
35 changed files with 130 additions and 207 deletions
34
Cargo.lock
34
Cargo.lock
|
@ -25,7 +25,7 @@ dependencies = [
|
|||
name = "alloc"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -123,7 +123,7 @@ version = "0.1.27"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
@ -462,7 +462,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "compiler_builtins"
|
||||
version = "0.1.14"
|
||||
version = "0.1.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -744,7 +744,7 @@ name = "dlmalloc"
|
|||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
@ -910,7 +910,7 @@ name = "fortanix-sgx-abi"
|
|||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
||||
|
@ -1071,7 +1071,7 @@ name = "hashbrown"
|
|||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-alloc 1.0.0",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
@ -1772,7 +1772,7 @@ dependencies = [
|
|||
name = "panic_abort"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -1782,7 +1782,7 @@ name = "panic_unwind"
|
|||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unwind 0.0.0",
|
||||
|
@ -1967,7 +1967,7 @@ name = "profiler_builtins"
|
|||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
|
@ -2492,7 +2492,7 @@ name = "rustc-demangle"
|
|||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
||||
|
@ -2620,7 +2620,7 @@ dependencies = [
|
|||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
|
@ -2850,7 +2850,7 @@ dependencies = [
|
|||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
|
@ -2912,7 +2912,7 @@ dependencies = [
|
|||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
|
@ -3029,7 +3029,7 @@ dependencies = [
|
|||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
|
@ -3298,7 +3298,7 @@ dependencies = [
|
|||
"alloc 0.0.0",
|
||||
"backtrace-sys 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"dlmalloc 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fortanix-sgx-abi 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3889,7 +3889,7 @@ name = "unwind"
|
|||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -4087,7 +4087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum colored 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0aa3473e85a3161b59845d6096b289bb577874cafeaf75ea1b1beaa6572c7fc"
|
||||
"checksum commoncrypto 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"
|
||||
"checksum commoncrypto-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"
|
||||
"checksum compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "e3f235c329e5cb9fa3d2ca2cc36256ba9a7f23fa76e0f4db6f68c23b73b2ac69"
|
||||
"checksum compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e899b947d7e71c3d35c0b6194d64025b84946640510e215090c815b20828964e"
|
||||
"checksum compiletest_rs 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "f40ecc9332b68270998995c00f8051ee856121764a0d3230e64c9efd059d27b6"
|
||||
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
|
||||
"checksum core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e2640d6d0bf22e82bed1b73c6aef8d5dd31e5abe6666c57e6d45e2649f4f887"
|
||||
|
|
|
@ -161,7 +161,33 @@ pub fn std_cargo(builder: &Builder<'_>,
|
|||
cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
|
||||
}
|
||||
|
||||
// Determine if we're going to compile in optimized C intrinsics to
|
||||
// the `compiler-builtins` crate. These intrinsics live in LLVM's
|
||||
// `compiler-rt` repository, but our `src/llvm-project` submodule isn't
|
||||
// always checked out, so we need to conditionally look for this. (e.g. if
|
||||
// an external LLVM is used we skip the LLVM submodule checkout).
|
||||
//
|
||||
// Note that this shouldn't affect the correctness of `compiler-builtins`,
|
||||
// but only its speed. Some intrinsics in C haven't been translated to Rust
|
||||
// yet but that's pretty rare. Other intrinsics have optimized
|
||||
// implementations in C which have only had slower versions ported to Rust,
|
||||
// so we favor the C version where we can, but it's not critical.
|
||||
//
|
||||
// If `compiler-rt` is available ensure that the `c` feature of the
|
||||
// `compiler-builtins` crate is enabled and it's configured to learn where
|
||||
// `compiler-rt` is located.
|
||||
let compiler_builtins_root = builder.src.join("src/llvm-project/compiler-rt");
|
||||
let compiler_builtins_c_feature = if compiler_builtins_root.exists() {
|
||||
cargo.env("RUST_COMPILER_RT_ROOT", &compiler_builtins_root);
|
||||
" compiler-builtins-c".to_string()
|
||||
} else {
|
||||
String::new()
|
||||
};
|
||||
|
||||
if builder.no_std(target) == Some(true) {
|
||||
let mut features = "compiler-builtins-mem".to_string();
|
||||
features.push_str(&compiler_builtins_c_feature);
|
||||
|
||||
// for no-std targets we only compile a few no_std crates
|
||||
cargo
|
||||
.args(&["-p", "alloc"])
|
||||
|
@ -170,7 +196,8 @@ pub fn std_cargo(builder: &Builder<'_>,
|
|||
.arg("--features")
|
||||
.arg("compiler-builtins-mem compiler-builtins-c");
|
||||
} else {
|
||||
let features = builder.std_features();
|
||||
let mut features = builder.std_features();
|
||||
features.push_str(&compiler_builtins_c_feature);
|
||||
|
||||
if compiler.stage != 0 && builder.config.sanitizers {
|
||||
// This variable is used by the sanitizer runtime crates, e.g.
|
||||
|
|
|
@ -288,9 +288,9 @@ pub fn sanitizer_lib_boilerplate(sanitizer_name: &str)
|
|||
} else {
|
||||
format!("static={}", link_name)
|
||||
};
|
||||
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
|
||||
// load our env var set by cargo to find the source code.
|
||||
let dir = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();
|
||||
// This env var is provided by rustbuild to tell us where `compiler-rt`
|
||||
// lives.
|
||||
let dir = env::var_os("RUST_COMPILER_RT_ROOT").unwrap();
|
||||
let lib = native_lib_boilerplate(
|
||||
dir.as_ref(),
|
||||
sanitizer_name,
|
||||
|
|
|
@ -24,7 +24,7 @@ RUN apt-get update && apt-get build-dep -y clang llvm && apt-get install -y --no
|
|||
gpg-agent
|
||||
|
||||
RUN apt-key adv --batch --yes --keyserver keyserver.ubuntu.com --recv-keys 74DA7924C5513486
|
||||
RUN add-apt-repository -y 'deb http://apt.dilos.org/dilos dilos2-testing main'
|
||||
RUN add-apt-repository -y 'deb http://apt.dilos.org/dilos dilos2 main'
|
||||
|
||||
WORKDIR /tmp
|
||||
COPY dist-various-2/shared.sh /tmp/
|
||||
|
|
|
@ -20,3 +20,9 @@ ENV RUST_CONFIGURE_ARGS \
|
|||
--build=x86_64-unknown-linux-gnu \
|
||||
--enable-full-bootstrap
|
||||
ENV SCRIPT python2.7 ../x.py build
|
||||
|
||||
# In general this just slows down the build and we're just a smoke test that
|
||||
# a full bootstrap works in general, so there's not much need to take this
|
||||
# penalty in build times.
|
||||
ENV NO_LLVM_ASSERTIONS 1
|
||||
ENV NO_DEBUG_ASSERTIONS 1
|
||||
|
|
|
@ -1035,11 +1035,6 @@ impl<'a, T> Iterator for Iter<'a, T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1095,11 +1090,6 @@ impl<T> Iterator for IntoIter<T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1146,11 +1136,6 @@ impl<T> Iterator for Drain<'_, T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "drain", since = "1.6.0")]
|
||||
|
|
|
@ -1193,11 +1193,6 @@ impl<'a, K: 'a, V: 'a> Iterator for Iter<'a, K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
(self.length, Some(self.length))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<(&'a K, &'a V)> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "fused", since = "1.26.0")]
|
||||
|
@ -1258,11 +1253,6 @@ impl<'a, K: 'a, V: 'a> Iterator for IterMut<'a, K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
(self.length, Some(self.length))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<(&'a K, &'a mut V)> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1369,11 +1359,6 @@ impl<K, V> Iterator for IntoIter<K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
(self.length, Some(self.length))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<(K, V)> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1436,11 +1421,6 @@ impl<'a, K, V> Iterator for Keys<'a, K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a K> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1478,11 +1458,6 @@ impl<'a, K, V> Iterator for Values<'a, K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a V> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1520,11 +1495,6 @@ impl<'a, K, V> Iterator for Range<'a, K, V> {
|
|||
unsafe { Some(self.next_unchecked()) }
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<(&'a K, &'a V)> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "map_values_mut", since = "1.10.0")]
|
||||
|
@ -1538,11 +1508,6 @@ impl<'a, K, V> Iterator for ValuesMut<'a, K, V> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a mut V> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "map_values_mut", since = "1.10.0")]
|
||||
|
@ -1661,11 +1626,6 @@ impl<'a, K, V> Iterator for RangeMut<'a, K, V> {
|
|||
unsafe { Some(self.next_unchecked()) }
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<(&'a K, &'a mut V)> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, K, V> RangeMut<'a, K, V> {
|
||||
|
|
|
@ -1019,11 +1019,6 @@ impl<'a, T> Iterator for Iter<'a, T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
|
||||
|
@ -1049,11 +1044,6 @@ impl<T> Iterator for IntoIter<T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T> DoubleEndedIterator for IntoIter<T> {
|
||||
|
@ -1083,11 +1073,6 @@ impl<'a, T> Iterator for Range<'a, T> {
|
|||
fn next(&mut self) -> Option<&'a T> {
|
||||
self.iter.next().map(|(k, _)| k)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "btree_range", since = "1.17.0")]
|
||||
|
|
|
@ -2385,10 +2385,6 @@ impl Iterator for Drain<'_> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<char> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "drain", since = "1.6.0")]
|
||||
|
|
|
@ -2395,11 +2395,6 @@ impl<T> Iterator for IntoIter<T> {
|
|||
fn count(self) -> usize {
|
||||
self.len()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -2519,11 +2514,6 @@ impl<T> Iterator for Drain<'_, T> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<T> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "drain", since = "1.6.0")]
|
||||
|
@ -2593,10 +2583,6 @@ impl<I: Iterator> Iterator for Splice<'_, I> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.drain.size_hint()
|
||||
}
|
||||
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "vec_splice", since = "1.21.0")]
|
||||
|
|
|
@ -117,8 +117,6 @@ impl Iterator for EscapeDefault {
|
|||
type Item = u8;
|
||||
fn next(&mut self) -> Option<u8> { self.range.next().map(|i| self.data[i]) }
|
||||
fn size_hint(&self) -> (usize, Option<usize>) { self.range.size_hint() }
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<u8> { self.next_back() }
|
||||
}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl DoubleEndedIterator for EscapeDefault {
|
||||
|
|
|
@ -73,11 +73,6 @@ impl<I> Iterator for Rev<I> where I: DoubleEndedIterator {
|
|||
{
|
||||
self.iter.position(predicate)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
|
|
@ -3547,11 +3547,6 @@ impl<'a, T, P> Iterator for Split<'a, T, P> where P: FnMut(&T) -> bool {
|
|||
(1, Some(self.v.len() + 1))
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -3650,11 +3645,6 @@ impl<'a, T, P> Iterator for SplitMut<'a, T, P> where P: FnMut(&T) -> bool {
|
|||
(1, Some(self.v.len() + 1))
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -3720,11 +3710,6 @@ impl<'a, T, P> Iterator for RSplit<'a, T, P> where P: FnMut(&T) -> bool {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "slice_rsplit", since = "1.27.0")]
|
||||
|
@ -3789,11 +3774,6 @@ impl<'a, T, P> Iterator for RSplitMut<'a, T, P> where P: FnMut(&T) -> bool {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "slice_rsplit", since = "1.27.0")]
|
||||
|
|
|
@ -1333,11 +1333,6 @@ impl<'a> Iterator for Lines<'a> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.0.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1384,11 +1379,6 @@ impl<'a> Iterator for LinesAny<'a> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.0.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -4231,11 +4221,6 @@ impl<'a> Iterator for SplitWhitespace<'a> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "split_whitespace", since = "1.1.0")]
|
||||
|
@ -4262,11 +4247,6 @@ impl<'a> Iterator for SplitAsciiWhitespace<'a> {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "split_ascii_whitespace", since = "1.34.0")]
|
||||
|
|
|
@ -57,9 +57,7 @@ fn main() {
|
|||
cfg.define("COMPILER_RT_HAS_ATOMICS", Some("1"));
|
||||
}
|
||||
|
||||
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
|
||||
// load our env var set by cargo to find the source code.
|
||||
let root = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();
|
||||
let root = env::var_os("RUST_COMPILER_RT_ROOT").unwrap();
|
||||
let root = Path::new(&root);
|
||||
|
||||
for src in profile_sources {
|
||||
|
|
|
@ -96,7 +96,7 @@ pub fn link_binary<'a, B: ArchiveBuilder<'a>>(sess: &'a Session,
|
|||
}
|
||||
}
|
||||
if sess.opts.debugging_opts.emit_artifact_notifications {
|
||||
sess.parse_sess.span_diagnostic.emit_artifact_notification(&out_filename);
|
||||
sess.parse_sess.span_diagnostic.emit_artifact_notification(&out_filename, "link");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ pub trait Emitter {
|
|||
/// Emit a notification that an artifact has been output.
|
||||
/// This is currently only supported for the JSON format,
|
||||
/// other formats can, and will, simply ignore it.
|
||||
fn emit_artifact_notification(&mut self, _path: &Path) {}
|
||||
fn emit_artifact_notification(&mut self, _path: &Path, _artifact_type: &str) {}
|
||||
|
||||
/// Checks if should show explanations about "rustc --explain"
|
||||
fn should_show_explain(&self) -> bool {
|
||||
|
@ -1645,7 +1645,7 @@ impl<'a> WritableDst<'a> {
|
|||
}
|
||||
}
|
||||
Style::Quotation => {}
|
||||
Style::OldSchoolNoteText | Style::MainHeaderMsg => {
|
||||
Style::MainHeaderMsg => {
|
||||
spec.set_bold(true);
|
||||
if cfg!(windows) {
|
||||
spec.set_intense(true)
|
||||
|
|
|
@ -769,8 +769,8 @@ impl Handler {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn emit_artifact_notification(&self, path: &Path) {
|
||||
self.emitter.borrow_mut().emit_artifact_notification(path);
|
||||
pub fn emit_artifact_notification(&self, path: &Path, artifact_type: &str) {
|
||||
self.emitter.borrow_mut().emit_artifact_notification(path, artifact_type);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -188,7 +188,6 @@ pub enum Style {
|
|||
UnderlineSecondary,
|
||||
LabelPrimary,
|
||||
LabelSecondary,
|
||||
OldSchoolNoteText,
|
||||
NoStyle,
|
||||
Level(Level),
|
||||
Highlight,
|
||||
|
|
|
@ -1050,7 +1050,8 @@ fn encode_and_write_metadata<'tcx>(
|
|||
tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e));
|
||||
}
|
||||
if tcx.sess.opts.debugging_opts.emit_artifact_notifications {
|
||||
tcx.sess.parse_sess.span_diagnostic.emit_artifact_notification(&out_filename);
|
||||
tcx.sess.parse_sess.span_diagnostic
|
||||
.emit_artifact_notification(&out_filename, "metadata");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ panic_unwind = { path = "../libpanic_unwind", optional = true }
|
|||
panic_abort = { path = "../libpanic_abort" }
|
||||
core = { path = "../libcore" }
|
||||
libc = { version = "0.2.51", default-features = false, features = ['rustc-dep-of-std'] }
|
||||
compiler_builtins = { version = "0.1.14" }
|
||||
compiler_builtins = { version = "0.1.15" }
|
||||
profiler_builtins = { path = "../libprofiler_builtins", optional = true }
|
||||
unwind = { path = "../libunwind" }
|
||||
hashbrown = { version = "0.3.0", features = ['rustc-dep-of-std'] }
|
||||
|
@ -49,12 +49,12 @@ fortanix-sgx-abi = { version = "0.3.2", features = ['rustc-dep-of-std'] }
|
|||
cc = "1.0"
|
||||
|
||||
[features]
|
||||
default = ["compiler_builtins_c", "std_detect_file_io", "std_detect_dlsym_getauxval"]
|
||||
default = ["std_detect_file_io", "std_detect_dlsym_getauxval"]
|
||||
|
||||
backtrace = ["backtrace-sys"]
|
||||
panic-unwind = ["panic_unwind"]
|
||||
profiler = ["profiler_builtins"]
|
||||
compiler_builtins_c = ["alloc/compiler-builtins-c"]
|
||||
compiler-builtins-c = ["alloc/compiler-builtins-c"]
|
||||
llvm-libunwind = ["unwind/llvm-libunwind"]
|
||||
|
||||
# Make panics and failed asserts immediately abort without formatting any message
|
||||
|
|
|
@ -746,10 +746,6 @@ impl Iterator for Args {
|
|||
self.inner.next().map(|s| s.into_string().unwrap())
|
||||
}
|
||||
fn size_hint(&self) -> (usize, Option<usize>) { self.inner.size_hint() }
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<String> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "env", since = "1.0.0")]
|
||||
|
@ -785,8 +781,6 @@ impl Iterator for ArgsOs {
|
|||
type Item = OsString;
|
||||
fn next(&mut self) -> Option<OsString> { self.inner.next() }
|
||||
fn size_hint(&self) -> (usize, Option<usize>) { self.inner.size_hint() }
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<OsString> { self.next_back() }
|
||||
}
|
||||
|
||||
#[stable(feature = "env", since = "1.0.0")]
|
||||
|
|
|
@ -888,11 +888,6 @@ impl<'a> Iterator for Iter<'a> {
|
|||
fn next(&mut self) -> Option<&'a OsStr> {
|
||||
self.inner.next().map(Component::as_os_str)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<&'a OsStr> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -956,11 +951,6 @@ impl<'a> Iterator for Components<'a> {
|
|||
}
|
||||
None
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<Self::Item> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
|
|
@ -35,8 +35,6 @@ impl Iterator for Args {
|
|||
type Item = OsString;
|
||||
fn next(&mut self) -> Option<OsString> { self.iter.next() }
|
||||
fn size_hint(&self) -> (usize, Option<usize>) { self.iter.size_hint() }
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<OsString> { self.next_back() }
|
||||
}
|
||||
|
||||
impl ExactSizeIterator for Args {
|
||||
|
|
|
@ -37,10 +37,6 @@ impl Iterator for Args {
|
|||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<OsString> {
|
||||
self.next_back()
|
||||
}
|
||||
}
|
||||
|
||||
impl ExactSizeIterator for Args {
|
||||
|
|
|
@ -181,8 +181,6 @@ impl Iterator for Args {
|
|||
type Item = OsString;
|
||||
fn next(&mut self) -> Option<OsString> { self.parsed_args_list.next() }
|
||||
fn size_hint(&self) -> (usize, Option<usize>) { self.parsed_args_list.size_hint() }
|
||||
#[inline]
|
||||
fn last(mut self) -> Option<OsString> { self.next_back() }
|
||||
}
|
||||
|
||||
impl DoubleEndedIterator for Args {
|
||||
|
|
|
@ -170,9 +170,11 @@ pub fn transcribe(
|
|||
}
|
||||
|
||||
LockstepIterSize::Contradiction(ref msg) => {
|
||||
// This should never happen because the macro parser should generate
|
||||
// properly-sized matches for all meta-vars.
|
||||
cx.span_bug(seq.span(), &msg[..]);
|
||||
// FIXME: this really ought to be caught at macro definition time... It
|
||||
// happens when two meta-variables are used in the same repetition in a
|
||||
// sequence, but they come from different sequence matchers and repeat
|
||||
// different amounts.
|
||||
cx.span_fatal(seq.span(), &msg[..]);
|
||||
}
|
||||
|
||||
LockstepIterSize::Constraint(len, _) => {
|
||||
|
@ -187,9 +189,10 @@ pub fn transcribe(
|
|||
// Is the repetition empty?
|
||||
if len == 0 {
|
||||
if seq.op == quoted::KleeneOp::OneOrMore {
|
||||
// This should be impossible because the macro parser would not
|
||||
// match the given macro arm.
|
||||
cx.span_bug(sp.entire(), "this must repeat at least once");
|
||||
// FIXME: this really ought to be caught at macro definition
|
||||
// time... It happens when the Kleene operator in the matcher and
|
||||
// the body for the same meta-variable do not match.
|
||||
cx.span_fatal(sp.entire(), "this must repeat at least once");
|
||||
}
|
||||
} else {
|
||||
// 0 is the initial counter (we have done 0 repretitions so far). `len`
|
||||
|
@ -327,8 +330,7 @@ impl LockstepIterSize {
|
|||
LockstepIterSize::Constraint(r_len, _) if l_len == r_len => self,
|
||||
LockstepIterSize::Constraint(r_len, r_id) => {
|
||||
let msg = format!(
|
||||
"inconsistent lockstep iteration: \
|
||||
'{}' has {} items, but '{}' has {}",
|
||||
"meta-variable `{}` repeats {} times, but `{}` repeats {} times",
|
||||
l_id, l_len, r_id, r_len
|
||||
);
|
||||
LockstepIterSize::Contradiction(msg)
|
||||
|
|
|
@ -92,8 +92,8 @@ impl Emitter for JsonEmitter {
|
|||
}
|
||||
}
|
||||
|
||||
fn emit_artifact_notification(&mut self, path: &Path) {
|
||||
let data = ArtifactNotification { artifact: path };
|
||||
fn emit_artifact_notification(&mut self, path: &Path, artifact_type: &str) {
|
||||
let data = ArtifactNotification { artifact: path, emit: artifact_type };
|
||||
let result = if self.pretty {
|
||||
writeln!(&mut self.dst, "{}", as_pretty_json(&data))
|
||||
} else {
|
||||
|
@ -185,6 +185,8 @@ struct DiagnosticCode {
|
|||
struct ArtifactNotification<'a> {
|
||||
/// The path of the artifact.
|
||||
artifact: &'a Path,
|
||||
/// What kind of artifact we're emitting.
|
||||
emit: &'a str,
|
||||
}
|
||||
|
||||
impl Diagnostic {
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 2c5656ae593851d0b2336a727cc14b77a06b8ac0
|
||||
Subproject commit 4efebe31651d5520bcba968878dbb8a4971d2045
|
|
@ -1 +1 @@
|
|||
{"artifact":"$TEST_BUILD_DIR/emit-artifact-notifications.nll/libemit_artifact_notifications.rmeta"}
|
||||
{"artifact":"$TEST_BUILD_DIR/emit-artifact-notifications.nll/libemit_artifact_notifications.rmeta","emit":"metadata"}
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"artifact":"$TEST_BUILD_DIR/emit-artifact-notifications/libemit_artifact_notifications.rmeta"}
|
||||
{"artifact":"$TEST_BUILD_DIR/emit-artifact-notifications/libemit_artifact_notifications.rmeta","emit":"metadata"}
|
||||
|
|
9
src/test/ui/macros/issue-61033-1.rs
Normal file
9
src/test/ui/macros/issue-61033-1.rs
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Regression test for issue #61033.
|
||||
|
||||
macro_rules! test1 {
|
||||
($x:ident, $($tt:tt)*) => { $($tt)+ } //~ERROR this must repeat at least once
|
||||
}
|
||||
|
||||
fn main() {
|
||||
test1!(x,);
|
||||
}
|
8
src/test/ui/macros/issue-61033-1.stderr
Normal file
8
src/test/ui/macros/issue-61033-1.stderr
Normal file
|
@ -0,0 +1,8 @@
|
|||
error: this must repeat at least once
|
||||
--> $DIR/issue-61033-1.rs:4:34
|
||||
|
|
||||
LL | ($x:ident, $($tt:tt)*) => { $($tt)+ }
|
||||
| ^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
19
src/test/ui/macros/issue-61033-2.rs
Normal file
19
src/test/ui/macros/issue-61033-2.rs
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Regression test for issue #61033.
|
||||
|
||||
macro_rules! test2 {
|
||||
(
|
||||
$(* $id1:ident)*
|
||||
$(+ $id2:ident)*
|
||||
) => {
|
||||
$( //~ERROR meta-variable `id1` repeats 2 times
|
||||
$id1 + $id2 // $id1 and $id2 may repeat different numbers of times
|
||||
)*
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
test2! {
|
||||
* a * b
|
||||
+ a + b + c
|
||||
}
|
||||
}
|
11
src/test/ui/macros/issue-61033-2.stderr
Normal file
11
src/test/ui/macros/issue-61033-2.stderr
Normal file
|
@ -0,0 +1,11 @@
|
|||
error: meta-variable `id1` repeats 2 times, but `id2` repeats 3 times
|
||||
--> $DIR/issue-61033-2.rs:8:10
|
||||
|
|
||||
LL | $(
|
||||
| __________^
|
||||
LL | | $id1 + $id2 // $id1 and $id2 may repeat different numbers of times
|
||||
LL | | )*
|
||||
| |_________^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Add table
Reference in a new issue