diff options
| author | bors <bors@rust-lang.org> | 2024-02-22 05:06:27 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-02-22 05:06:27 +0000 |
| commit | 3815fc06256f6281ee064fc607d24020dc96f05b (patch) | |
| tree | a9ec036cc3cb6e18d43f62e85574e81288b82cf0 /src | |
| parent | 596dd65cfa1d5f1a55a9a68d7f45bda436e3055d (diff) | |
| parent | 6f3bc7d938f5a8a772ba67cf41aad16a03b9fb1c (diff) | |
Auto merge of #3310 - rust-lang:rustup-2024-02-22, r=oli-obk
Automatic Rustup
Diffstat (limited to 'src')
78 files changed, 5157 insertions, 715 deletions
diff --git a/src/bootstrap/defaults/config.codegen.toml b/src/bootstrap/defaults/config.codegen.toml deleted file mode 100644 index 7c33ce958c9..00000000000 --- a/src/bootstrap/defaults/config.codegen.toml +++ /dev/null @@ -1,25 +0,0 @@ -# These defaults are meant for contributors to the compiler who modify codegen or LLVM -[build] -# Contributors working on the compiler will probably expect compiler docs to be generated. -compiler-docs = true - -[llvm] -# This enables debug-assertions in LLVM, -# catching logic errors in codegen much earlier in the process. -assertions = true -# enable warnings during the llvm compilation -enable-warnings = true -# build llvm from source -download-ci-llvm = "if-unchanged" - -[rust] -# This enables `RUSTC_LOG=debug`, avoiding confusing situations -# where adding `debug!()` appears to do nothing. -# However, it makes running the compiler slightly slower. -debug-logging = true -# This greatly increases the speed of rebuilds, especially when there are only minor changes. However, it makes the initial build slightly slower. -incremental = true -# Print backtrace on internal compiler errors during bootstrap -backtrace-on-ice = true -# Make the compiler and standard library faster to build, at the expense of a ~20% runtime slowdown. -lto = "off" diff --git a/src/bootstrap/defaults/config.compiler.toml b/src/bootstrap/defaults/config.compiler.toml index b27b524b873..178c6e9056c 100644 --- a/src/bootstrap/defaults/config.compiler.toml +++ b/src/bootstrap/defaults/config.compiler.toml @@ -14,7 +14,15 @@ incremental = true backtrace-on-ice = true # Make the compiler and standard library faster to build, at the expense of a ~20% runtime slowdown. lto = "off" +# Forces frame pointers to be used with `-Cforce-frame-pointers`. +# This can be helpful for profiling at a small performance cost. +frame-pointers = true [llvm] +# This enables debug-assertions in LLVM, +# catching logic errors in codegen much earlier in the process. +assertions = true +# Enable warnings during the LLVM compilation (when LLVM is changed, causing a compilation) +enable-warnings = true # Will download LLVM from CI if available on your platform. download-ci-llvm = "if-unchanged" diff --git a/src/bootstrap/src/bin/main.rs b/src/bootstrap/src/bin/main.rs index b97f73aa652..070d951dba9 100644 --- a/src/bootstrap/src/bin/main.rs +++ b/src/bootstrap/src/bin/main.rs @@ -39,14 +39,14 @@ fn main() { .open(&lock_path))); _build_lock_guard = match build_lock.try_write() { Ok(mut lock) => { - t!(lock.write(&process::id().to_string().as_ref())); + t!(lock.write(process::id().to_string().as_ref())); lock } err => { drop(err); println!("WARNING: build directory locked by process {pid}, waiting for lock"); let mut lock = t!(build_lock.write()); - t!(lock.write(&process::id().to_string().as_ref())); + t!(lock.write(process::id().to_string().as_ref())); lock } }; @@ -113,14 +113,14 @@ fn main() { continue; } - let file = t!(fs::File::open(&entry.path())); + let file = t!(fs::File::open(entry.path())); // To ensure deterministic results we must sort the dump lines. // This is necessary because the order of rustc invocations different // almost all the time. let mut lines: Vec<String> = t!(BufReader::new(&file).lines().collect()); lines.sort_by_key(|t| t.to_lowercase()); - let mut file = t!(OpenOptions::new().write(true).truncate(true).open(&entry.path())); + let mut file = t!(OpenOptions::new().write(true).truncate(true).open(entry.path())); t!(file.write_all(lines.join("\n").as_bytes())); } } @@ -156,7 +156,7 @@ fn check_version(config: &Config) -> Option<String> { msg.push_str("There have been changes to x.py since you last updated:\n"); for change in changes { - msg.push_str(&format!(" [{}] {}\n", change.severity.to_string(), change.summary)); + msg.push_str(&format!(" [{}] {}\n", change.severity, change.summary)); msg.push_str(&format!( " - PR Link https://github.com/rust-lang/rust/pull/{}\n", change.change_id diff --git a/src/bootstrap/src/bin/rustc.rs b/src/bootstrap/src/bin/rustc.rs index 38c55b20344..74a924d86c7 100644 --- a/src/bootstrap/src/bin/rustc.rs +++ b/src/bootstrap/src/bin/rustc.rs @@ -276,7 +276,7 @@ fn main() { dur.as_secs(), dur.subsec_millis(), if rusage_data.is_some() { " " } else { "" }, - rusage_data.unwrap_or(String::new()), + rusage_data.unwrap_or_default(), ); } } @@ -440,5 +440,5 @@ fn format_rusage_data(_child: Child) -> Option<String> { )); } - return Some(init_str); + Some(init_str) } diff --git a/src/bootstrap/src/bin/sccache-plus-cl.rs b/src/bootstrap/src/bin/sccache-plus-cl.rs index 554c2dd4d81..6e87d4222e8 100644 --- a/src/bootstrap/src/bin/sccache-plus-cl.rs +++ b/src/bootstrap/src/bin/sccache-plus-cl.rs @@ -18,9 +18,9 @@ fn main() { // Invoke sccache with said compiler let sccache_path = env::var_os("SCCACHE_PATH").unwrap(); - let mut cmd = Command::new(&sccache_path); + let mut cmd = Command::new(sccache_path); cmd.arg(compiler.path()); - for &(ref k, ref v) in compiler.env() { + for (k, v) in compiler.env() { cmd.env(k, v); } for arg in env::args().skip(1) { diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs index 4a04dbf44aa..3ac60f15ef6 100644 --- a/src/bootstrap/src/core/build_steps/check.rs +++ b/src/bootstrap/src/core/build_steps/check.rs @@ -34,7 +34,7 @@ fn args(builder: &Builder<'_>) -> Vec<String> { &builder.config.cmd { // disable the most spammy clippy lints - let ignored_lints = vec![ + let ignored_lints = [ "many_single_char_names", // there are a lot in stdarch "collapsible_if", "type_complexity", @@ -150,7 +150,7 @@ impl Step for Std { if compiler.stage == 0 { let libdir = builder.sysroot_libdir(compiler, target); let hostdir = builder.sysroot_libdir(compiler, compiler.host); - add_to_sysroot(&builder, &libdir, &hostdir, &libstd_stamp(builder, compiler, target)); + add_to_sysroot(builder, &libdir, &hostdir, &libstd_stamp(builder, compiler, target)); } drop(_guard); @@ -301,7 +301,7 @@ impl Step for Rustc { let libdir = builder.sysroot_libdir(compiler, target); let hostdir = builder.sysroot_libdir(compiler, compiler.host); - add_to_sysroot(&builder, &libdir, &hostdir, &librustc_stamp(builder, compiler, target)); + add_to_sysroot(builder, &libdir, &hostdir, &librustc_stamp(builder, compiler, target)); } } @@ -353,7 +353,7 @@ impl Step for CodegenBackend { .arg(builder.src.join(format!("compiler/rustc_codegen_{backend}/Cargo.toml"))); rustc_cargo_env(builder, &mut cargo, target, compiler.stage); - let _guard = builder.msg_check(&backend, target); + let _guard = builder.msg_check(backend, target); run_cargo( builder, diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs index 9d7f88a9d42..d349cd67fed 100644 --- a/src/bootstrap/src/core/build_steps/compile.rs +++ b/src/bootstrap/src/core/build_steps/compile.rs @@ -107,8 +107,8 @@ impl Std { ) -> Vec<(PathBuf, DependencyType)> { let mut deps = Vec::new(); if !self.is_for_mir_opt_tests { - deps.extend(copy_third_party_objects(builder, &compiler, target)); - deps.extend(copy_self_contained_objects(builder, &compiler, target)); + deps.extend(copy_third_party_objects(builder, compiler, target)); + deps.extend(copy_self_contained_objects(builder, compiler, target)); } deps } @@ -186,7 +186,7 @@ impl Step for Std { // Profiler information requires LLVM's compiler-rt if builder.config.profiler { - builder.update_submodule(&Path::new("src/llvm-project")); + builder.update_submodule(Path::new("src/llvm-project")); } let mut target_deps = builder.ensure(StartupObjects { compiler, target }); @@ -271,7 +271,7 @@ impl Step for Std { if target.is_synthetic() { cargo.env("RUSTC_BOOTSTRAP_SYNTHETIC_TARGET", "1"); } - for rustflag in self.extra_rust_args.into_iter() { + for rustflag in self.extra_rust_args.iter() { cargo.rustflag(rustflag); } @@ -333,7 +333,7 @@ fn copy_third_party_objects( // The sanitizers are only copied in stage1 or above, // to avoid creating dependency on LLVM. target_deps.extend( - copy_sanitizers(builder, &compiler, target) + copy_sanitizers(builder, compiler, target) .into_iter() .map(|d| (d, DependencyType::Target)), ); @@ -487,7 +487,7 @@ pub fn std_cargo(builder: &Builder<'_>, target: TargetSelection, stage: u32, car // for no-std targets we only compile a few no_std crates cargo - .args(&["-p", "alloc"]) + .args(["-p", "alloc"]) .arg("--manifest-path") .arg(builder.src.join("library/alloc/Cargo.toml")) .arg("--features") @@ -626,20 +626,20 @@ impl Step for StdLink { .build .config .initial_rustc - .starts_with(builder.out.join(&compiler.host.triple).join("stage0/bin")) + .starts_with(builder.out.join(compiler.host.triple).join("stage0/bin")) { // Copy bin files from stage0/bin to stage0-sysroot/bin - let sysroot = builder.out.join(&compiler.host.triple).join("stage0-sysroot"); + let sysroot = builder.out.join(compiler.host.triple).join("stage0-sysroot"); let host = compiler.host.triple; - let stage0_bin_dir = builder.out.join(&host).join("stage0/bin"); + let stage0_bin_dir = builder.out.join(host).join("stage0/bin"); let sysroot_bin_dir = sysroot.join("bin"); t!(fs::create_dir_all(&sysroot_bin_dir)); builder.cp_r(&stage0_bin_dir, &sysroot_bin_dir); // Copy all *.so files from stage0/lib to stage0-sysroot/lib - let stage0_lib_dir = builder.out.join(&host).join("stage0/lib"); - if let Ok(files) = fs::read_dir(&stage0_lib_dir) { + let stage0_lib_dir = builder.out.join(host).join("stage0/lib"); + if let Ok(files) = fs::read_dir(stage0_lib_dir) { for file in files { let file = t!(file); let path = file.path(); @@ -654,9 +654,9 @@ impl Step for StdLink { t!(fs::create_dir_all(&sysroot_codegen_backends)); let stage0_codegen_backends = builder .out - .join(&host) + .join(host) .join("stage0/lib/rustlib") - .join(&host) + .join(host) .join("codegen-backends"); if stage0_codegen_backends.exists() { builder.cp_r(&stage0_codegen_backends, &sysroot_codegen_backends); @@ -1179,7 +1179,7 @@ fn rustc_llvm_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelect // The config can also specify its own llvm linker flags. if let Some(ref s) = builder.config.llvm_ldflags { if !llvm_linker_flags.is_empty() { - llvm_linker_flags.push_str(" "); + llvm_linker_flags.push(' '); } llvm_linker_flags.push_str(s); } @@ -1270,7 +1270,7 @@ fn needs_codegen_config(run: &RunConfig<'_>) -> bool { for path_set in &run.paths { needs_codegen_cfg = match path_set { PathSet::Set(set) => set.iter().any(|p| is_codegen_cfg_needed(p, run)), - PathSet::Suite(suite) => is_codegen_cfg_needed(&suite, run), + PathSet::Suite(suite) => is_codegen_cfg_needed(suite, run), } } needs_codegen_cfg @@ -1279,7 +1279,7 @@ fn needs_codegen_config(run: &RunConfig<'_>) -> bool { pub(crate) const CODEGEN_BACKEND_PREFIX: &str = "rustc_codegen_"; fn is_codegen_cfg_needed(path: &TaskPath, run: &RunConfig<'_>) -> bool { - if path.path.to_str().unwrap().contains(&CODEGEN_BACKEND_PREFIX) { + if path.path.to_str().unwrap().contains(CODEGEN_BACKEND_PREFIX) { let mut needs_codegen_backend_config = true; for &backend in run.builder.config.codegen_backends(run.target) { if path @@ -1300,7 +1300,7 @@ fn is_codegen_cfg_needed(path: &TaskPath, run: &RunConfig<'_>) -> bool { } } - return false; + false } impl Step for CodegenBackend { @@ -1393,7 +1393,7 @@ impl Step for CodegenBackend { } let stamp = codegen_backend_stamp(builder, compiler, target, backend); let codegen_backend = codegen_backend.to_str().unwrap(); - t!(fs::write(&stamp, &codegen_backend)); + t!(fs::write(stamp, codegen_backend)); } } @@ -1441,7 +1441,7 @@ fn copy_codegen_backends_to_sysroot( let dot = filename.find('.').unwrap(); format!("{}-{}{}", &filename[..dash], builder.rust_release(), &filename[dot..]) }; - builder.copy(&file, &dst.join(target_filename)); + builder.copy(file, &dst.join(target_filename)); } } @@ -1519,7 +1519,7 @@ impl Step for Sysroot { /// 1-3. fn run(self, builder: &Builder<'_>) -> Interned<PathBuf> { let compiler = self.compiler; - let host_dir = builder.out.join(&compiler.host.triple); + let host_dir = builder.out.join(compiler.host.triple); let sysroot_dir = |stage| { if stage == 0 { @@ -1578,7 +1578,7 @@ impl Step for Sysroot { let mut add_filtered_files = |suffix, contents| { for path in contents { let path = Path::new(&path); - if path.parent().map_or(false, |parent| parent.ends_with(&suffix)) { + if path.parent().map_or(false, |parent| parent.ends_with(suffix)) { filtered_files.push(path.file_name().unwrap().to_owned()); } } @@ -1802,7 +1802,7 @@ impl Step for Assemble { if let Some(lld_install) = lld_install { let src_exe = exe("lld", target_compiler.host); let dst_exe = exe("rust-lld", target_compiler.host); - builder.copy(&lld_install.join("bin").join(&src_exe), &libdir_bin.join(&dst_exe)); + builder.copy(&lld_install.join("bin").join(src_exe), &libdir_bin.join(dst_exe)); let self_contained_lld_dir = libdir_bin.join("gcc-ld"); t!(fs::create_dir_all(&self_contained_lld_dir)); let lld_wrapper_exe = builder.ensure(crate::core::build_steps::tool::LldWrapper { @@ -1850,7 +1850,7 @@ impl Step for Assemble { let out_dir = builder.cargo_out(build_compiler, Mode::Rustc, host); let rustc = out_dir.join(exe("rustc-main", host)); let bindir = sysroot.join("bin"); - t!(fs::create_dir_all(&bindir)); + t!(fs::create_dir_all(bindir)); let compiler = builder.rustc(target_compiler); builder.copy(&rustc, &compiler); @@ -1869,9 +1869,9 @@ pub fn add_to_sysroot( stamp: &Path, ) { let self_contained_dst = &sysroot_dst.join("self-contained"); - t!(fs::create_dir_all(&sysroot_dst)); - t!(fs::create_dir_all(&sysroot_host_dst)); - t!(fs::create_dir_all(&self_contained_dst)); + t!(fs::create_dir_all(sysroot_dst)); + t!(fs::create_dir_all(sysroot_host_dst)); + t!(fs::create_dir_all(self_contained_dst)); for (path, dependency_type) in builder.read_stamp_file(stamp) { let dst = match dependency_type { DependencyType::Host => sysroot_host_dst, @@ -2009,14 +2009,14 @@ pub fn run_cargo( .map(|e| (e.path(), e.file_name().into_string().unwrap(), t!(e.metadata()))) .collect::<Vec<_>>(); for (prefix, extension, expected_len) in toplevel { - let candidates = contents.iter().filter(|&&(_, ref filename, ref meta)| { + let candidates = contents.iter().filter(|&(_, filename, meta)| { meta.len() == expected_len && filename .strip_prefix(&prefix[..]) .map(|s| s.starts_with('-') && s.ends_with(&extension[..])) .unwrap_or(false) }); - let max = candidates.max_by_key(|&&(_, _, ref metadata)| { + let max = candidates.max_by_key(|&(_, _, metadata)| { metadata.modified().expect("mtime should be available on all relevant OSes") }); let path_to_add = match max { @@ -2045,7 +2045,7 @@ pub fn run_cargo( new_contents.extend(dep.to_str().unwrap().as_bytes()); new_contents.extend(b"\0"); } - t!(fs::write(&stamp, &new_contents)); + t!(fs::write(stamp, &new_contents)); deps.into_iter().map(|(d, _)| d).collect() } diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs index 6d56492e41b..d9ab18e7250 100644 --- a/src/bootstrap/src/core/build_steps/dist.rs +++ b/src/bootstrap/src/core/build_steps/dist.rs @@ -78,7 +78,7 @@ impl Step for Docs { let mut tarball = Tarball::new(builder, "rust-docs", &host.triple); tarball.set_product_name("Rust Documentation"); tarball.add_bulk_dir(&builder.doc_out(host), dest); - tarball.add_file(&builder.src.join("src/doc/robots.txt"), dest, 0o644); + tarball.add_file(builder.src.join("src/doc/robots.txt"), dest, 0o644); Some(tarball.generate()) } } @@ -342,7 +342,7 @@ impl Step for Mingw { // thrown away (this contains the runtime DLLs included in the rustc package // above) and the second argument is where to place all the MinGW components // (which is what we want). - make_win_dist(&tmpdir(builder), tarball.image_dir(), host, &builder); + make_win_dist(&tmpdir(builder), tarball.image_dir(), host, builder); Some(tarball.generate()) } @@ -398,10 +398,11 @@ impl Step for Rustc { let host = compiler.host; let src = builder.sysroot(compiler); - // Copy rustc/rustdoc binaries + // Copy rustc binary t!(fs::create_dir_all(image.join("bin"))); builder.cp_r(&src.join("bin"), &image.join("bin")); + // If enabled, copy rustdoc binary if builder .config .tools @@ -657,7 +658,7 @@ impl Step for Std { let compiler_to_use = builder.compiler_for(compiler.stage, compiler.host, target); let stamp = compile::libstd_stamp(builder, compiler_to_use, target); verify_uefi_rlib_format(builder, target, &stamp); - copy_target_libs(builder, target, &tarball.image_dir(), &stamp); + copy_target_libs(builder, target, tarball.image_dir(), &stamp); Some(tarball.generate()) } @@ -733,7 +734,7 @@ impl Step for Analysis { const DEFAULT: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "analysis"); + let default = should_build_extended_tool(run.builder, "analysis"); run.alias("rust-analysis").default_condition(default) } @@ -889,7 +890,7 @@ impl Step for Src { /// Creates the `rust-src` installer component fn run(self, builder: &Builder<'_>) -> GeneratedTarball { if !builder.config.dry_run() { - builder.update_submodule(&Path::new("src/llvm-project")); + builder.update_submodule(Path::new("src/llvm-project")); } let tarball = Tarball::new_targetless(builder, "rust-src"); @@ -975,7 +976,7 @@ impl Step for PlainSourceTarball { ]; let src_dirs = ["src", "compiler", "library", "tests"]; - copy_src_dirs(builder, &builder.src, &src_dirs, &[], &plain_dst_src); + copy_src_dirs(builder, &builder.src, &src_dirs, &[], plain_dst_src); // Copy the files normally for item in &src_files { @@ -985,8 +986,8 @@ impl Step for PlainSourceTarball { // Create the version file builder.create(&plain_dst_src.join("version"), &builder.rust_version()); if let Some(info) = builder.rust_info().info() { - channel::write_commit_hash_file(&plain_dst_src, &info.sha); - channel::write_commit_info_file(&plain_dst_src, info); + channel::write_commit_hash_file(plain_dst_src, &info.sha); + channel::write_commit_info_file(plain_dst_src, info); } // If we're building from git or tarball sources, we need to vendor @@ -1013,7 +1014,7 @@ impl Step for PlainSourceTarball { // Will read the libstd Cargo.toml // which uses the unstable `public-dependency` feature. .env("RUSTC_BOOTSTRAP", "1") - .current_dir(&plain_dst_src); + .current_dir(plain_dst_src); let config = if !builder.config.dry_run() { t!(String::from_utf8(t!(cmd.output()).stdout)) @@ -1042,7 +1043,7 @@ impl Step for Cargo { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "cargo"); + let default = should_build_extended_tool(run.builder, "cargo"); run.alias("cargo").default_condition(default) } @@ -1069,7 +1070,7 @@ impl Step for Cargo { let mut tarball = Tarball::new(builder, "cargo", &target.triple); tarball.set_overlay(OverlayKind::Cargo); - tarball.add_file(&cargo, "bin", 0o755); + tarball.add_file(cargo, "bin", 0o755); tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644); tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo"); tarball.add_dir(etc.join("man"), "share/man/man1"); @@ -1091,7 +1092,7 @@ impl Step for Rls { const DEFAULT: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "rls"); + let default = should_build_extended_tool(run.builder, "rls"); run.alias("rls").default_condition(default) } @@ -1133,7 +1134,7 @@ impl Step for RustAnalyzer { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "rust-analyzer"); + let default = should_build_extended_tool(run.builder, "rust-analyzer"); run.alias("rust-analyzer").default_condition(default) } @@ -1175,7 +1176,7 @@ impl Step for Clippy { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "clippy"); + let default = should_build_extended_tool(run.builder, "clippy"); run.alias("clippy").default_condition(default) } @@ -1223,7 +1224,7 @@ impl Step for Miri { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "miri"); + let default = should_build_extended_tool(run.builder, "miri"); run.alias("miri").default_condition(default) } @@ -1336,12 +1337,12 @@ impl Step for CodegenBackend { let src = builder.sysroot(compiler); let backends_src = builder.sysroot_codegen_backends(compiler); let backends_rel = backends_src - .strip_prefix(&src) + .strip_prefix(src) .unwrap() .strip_prefix(builder.sysroot_libdir_relative(compiler)) .unwrap(); // Don't use custom libdir here because ^lib/ will be resolved again with installer - let backends_dst = PathBuf::from("lib").join(&backends_rel); + let backends_dst = PathBuf::from("lib").join(backends_rel); let backend_name = format!("rustc_codegen_{}", backend); let mut found_backend = false; @@ -1370,7 +1371,7 @@ impl Step for Rustfmt { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "rustfmt"); + let default = should_build_extended_tool(run.builder, "rustfmt"); run.alias("rustfmt").default_condition(default) } @@ -1453,7 +1454,7 @@ impl Step for RustDemangler { let mut tarball = Tarball::new(builder, "rust-demangler", &target.triple); tarball.set_overlay(OverlayKind::RustDemangler); tarball.is_preview(true); - tarball.add_file(&rust_demangler, "bin", 0o755); + tarball.add_file(rust_demangler, "bin", 0o755); tarball.add_legal_and_readme_to("share/doc/rust-demangler"); Some(tarball.generate()) } @@ -1608,7 +1609,7 @@ impl Step for Extended { let prepare = |name: &str| { builder.create_dir(&pkg.join(name)); builder.cp_r( - &work.join(&format!("{}-{}", pkgname(builder, name), target.triple)), + &work.join(format!("{}-{}", pkgname(builder, name), target.triple)), &pkg.join(name), ); builder.install(&etc.join("pkg/postinstall"), &pkg.join(name), 0o755); @@ -1672,7 +1673,7 @@ impl Step for Extended { name.to_string() }; builder.cp_r( - &work.join(&format!("{}-{}", pkgname(builder, name), target.triple)).join(dir), + &work.join(format!("{}-{}", pkgname(builder, name), target.triple)).join(dir), &exe.join(name), ); builder.remove(&exe.join(name).join("manifest.in")); @@ -1706,7 +1707,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rustc") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("RustcGroup") .arg("-dr") @@ -1722,7 +1723,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-docs") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("DocsGroup") .arg("-dr") @@ -1740,7 +1741,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("cargo") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("CargoGroup") .arg("-dr") @@ -1757,7 +1758,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-std") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("StdGroup") .arg("-dr") @@ -1773,7 +1774,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-analyzer") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("RustAnalyzerGroup") .arg("-dr") @@ -1792,7 +1793,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("clippy") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("ClippyGroup") .arg("-dr") @@ -1811,7 +1812,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-demangler") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("RustDemanglerGroup") .arg("-dr") @@ -1830,7 +1831,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("miri") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("MiriGroup") .arg("-dr") @@ -1848,7 +1849,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-analysis") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("AnalysisGroup") .arg("-dr") @@ -1866,7 +1867,7 @@ impl Step for Extended { .current_dir(&exe) .arg("dir") .arg("rust-mingw") - .args(&heat_flags) + .args(heat_flags) .arg("-cg") .arg("GccGroup") .arg("-dr") @@ -1889,10 +1890,10 @@ impl Step for Extended { .arg("-dStdDir=rust-std") .arg("-dAnalysisDir=rust-analysis") .arg("-arch") - .arg(&arch) + .arg(arch) .arg("-out") .arg(&output) - .arg(&input); + .arg(input); add_env(builder, &mut cmd, target); if built_tools.contains("clippy") { @@ -2025,7 +2026,7 @@ fn install_llvm_file(builder: &Builder<'_>, source: &Path, destination: &Path) { return; } - builder.install(&source, destination, 0o644); + builder.install(source, destination, 0o644); } /// Maybe add LLVM object files to the given destination lib-dir. Allows either static or dynamic linking. @@ -2122,7 +2123,7 @@ impl Step for LlvmTools { const DEFAULT: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - let default = should_build_extended_tool(&run.builder, "llvm-tools"); + let default = should_build_extended_tool(run.builder, "llvm-tools"); // FIXME: allow using the names of the tools themselves? run.alias("llvm-tools").default_condition(default) } @@ -2230,12 +2231,12 @@ impl Step for RustDev { tarball.add_file(lld_path, "bin", 0o755); } - tarball.add_file(&builder.llvm_filecheck(target), "bin", 0o755); + tarball.add_file(builder.llvm_filecheck(target), "bin", 0o755); // Copy the include directory as well; needed mostly to build // librustc_llvm properly (e.g., llvm-config.h is in here). But also // just broadly useful to be able to link against the bundled LLVM. - tarball.add_dir(&builder.llvm_out(target).join("include"), "include"); + tarball.add_dir(builder.llvm_out(target).join("include"), "include"); // Copy libLLVM.so to the target lib dir as well, so the RPATH like // `$ORIGIN/../lib` can find it. It may also be used as a dependency @@ -2311,7 +2312,7 @@ impl Step for BuildManifest { let build_manifest = builder.tool_exe(Tool::BuildManifest); let tarball = Tarball::new(builder, "build-manifest", &self.target.triple); - tarball.add_file(&build_manifest, "bin", 0o755); + tarball.add_file(build_manifest, "bin", 0o755); tarball.generate() } } diff --git a/src/bootstrap/src/core/build_steps/doc.rs b/src/bootstrap/src/core/build_steps/doc.rs index fdb099e4ab1..7a122a8676b 100644 --- a/src/bootstrap/src/core/build_steps/doc.rs +++ b/src/bootstrap/src/core/build_steps/doc.rs @@ -151,7 +151,7 @@ impl<P: Step> Step for RustbookSrc<P> { builder.info(&format!("Rustbook ({target}) - {name}")); let _ = fs::remove_dir_all(&out); - builder.run(rustbook_cmd.arg("build").arg(&src).arg("-d").arg(out)); + builder.run(rustbook_cmd.arg("build").arg(src).arg("-d").arg(out)); } if self.parent.is_some() { @@ -384,7 +384,7 @@ impl Step for Standalone { // with no particular explicit doc requested (e.g. library/core). if builder.paths.is_empty() || builder.was_invoked_explicitly::<Self>(Kind::Doc) { let index = out.join("index.html"); - builder.open_in_browser(&index); + builder.open_in_browser(index); } } } @@ -517,7 +517,7 @@ impl Step for SharedAssets { .replace("VERSION", &builder.rust_release()) .replace("SHORT_HASH", builder.rust_info().sha_short().unwrap_or("")) .replace("STAMP", builder.rust_info().sha().unwrap_or("")); - t!(fs::write(&version_info, &info)); + t!(fs::write(&version_info, info)); } builder.copy(&builder.src.join("src").join("doc").join("rust.css"), &out.join("rust.css")); @@ -714,11 +714,11 @@ fn doc_std( } let description = - format!("library{} in {} format", crate_description(&requested_crates), format.as_str()); - let _guard = builder.msg_doc(compiler, &description, target); + format!("library{} in {} format", crate_description(requested_crates), format.as_str()); + let _guard = builder.msg_doc(compiler, description, target); builder.run(&mut cargo.into()); - builder.cp_r(&out_dir, &out); + builder.cp_r(&out_dir, out); } #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -781,7 +781,7 @@ impl Step for Rustc { let _guard = builder.msg_sysroot_tool( Kind::Doc, stage, - &format!("compiler{}", crate_description(&self.crates)), + format!("compiler{}", crate_description(&self.crates)), compiler.host, target, ); @@ -819,7 +819,7 @@ impl Step for Rustc { // Create all crate output directories first to make sure rustdoc uses // relative links. // FIXME: Cargo should probably do this itself. - let dir_name = krate.replace("-", "_"); + let dir_name = krate.replace('-', "_"); t!(fs::create_dir_all(out_dir.join(&*dir_name))); cargo.arg("-p").arg(krate); if to_open.is_none() { @@ -844,7 +844,7 @@ impl Step for Rustc { if !builder.config.dry_run() { // Sanity check on linked compiler crates for krate in &*self.crates { - let dir_name = krate.replace("-", "_"); + let dir_name = krate.replace('-', "_"); // Making sure the directory exists and is not empty. assert!(out.join(&*dir_name).read_dir().unwrap().next().is_some()); } @@ -1160,7 +1160,7 @@ impl Step for RustcBook { cmd.arg(&out_listing); cmd.arg("--rustc"); cmd.arg(&rustc); - cmd.arg("--rustc-target").arg(&self.target.rustc_target_arg()); + cmd.arg("--rustc-target").arg(self.target.rustc_target_arg()); if builder.is_verbose() { cmd.arg("--verbose"); } diff --git a/src/bootstrap/src/core/build_steps/format.rs b/src/bootstrap/src/core/build_steps/format.rs index e792d38b7ea..69c8792b031 100644 --- a/src/bootstrap/src/core/build_steps/format.rs +++ b/src/bootstrap/src/core/build_steps/format.rs @@ -11,7 +11,7 @@ use std::process::{Command, Stdio}; use std::sync::mpsc::SyncSender; fn rustfmt(src: &Path, rustfmt: &Path, paths: &[PathBuf], check: bool) -> impl FnMut(bool) -> bool { - let mut cmd = Command::new(&rustfmt); + let mut cmd = Command::new(rustfmt); // avoid the submodule config paths from coming into play, // we only allow a single global config for the workspace for now cmd.arg("--config-path").arg(&src.canonicalize().unwrap()); @@ -162,7 +162,7 @@ pub fn format(build: &Builder<'_>, check: bool, paths: &[PathBuf]) { // against anything like `compiler/rustc_foo/src/foo.rs`, // preventing the latter from being formatted. untracked_count += 1; - fmt_override.add(&format!("!/{untracked_path}")).expect(&untracked_path); + fmt_override.add(&format!("!/{untracked_path}")).expect(untracked_path); } // Only check modified files locally to speed up runtime. // We still check all files in CI to avoid bugs in `get_modified_rs_files` letting regressions slip through; @@ -221,7 +221,7 @@ pub fn format(build: &Builder<'_>, check: bool, paths: &[PathBuf]) { assert!(rustfmt_path.exists(), "{}", rustfmt_path.display()); let src = build.src.clone(); let (tx, rx): (SyncSender<PathBuf>, _) = std::sync::mpsc::sync_channel(128); - let walker = match paths.get(0) { + let walker = match paths.first() { Some(first) => { let find_shortcut_candidates = |p: &PathBuf| { let mut candidates = Vec::new(); diff --git a/src/bootstrap/src/core/build_steps/install.rs b/src/bootstrap/src/core/build_steps/install.rs index 1c565e7f7cc..29238b90225 100644 --- a/src/bootstrap/src/core/build_steps/install.rs +++ b/src/bootstrap/src/core/build_steps/install.rs @@ -24,7 +24,7 @@ const SHELL: &str = "sh"; // We have to run a few shell scripts, which choke quite a bit on both `\` // characters and on `C:\` paths, so normalize both of them away. fn sanitize_sh(path: &Path) -> String { - let path = path.to_str().unwrap().replace("\\", "/"); + let path = path.to_str().unwrap().replace('\\', "/"); return change_drive(unc_to_lfs(&path)).unwrap_or(path); fn unc_to_lfs(s: &str) -> &str { @@ -44,7 +44,7 @@ fn sanitize_sh(path: &Path) -> String { } } -fn is_dir_writable_for_user(dir: &PathBuf) -> bool { +fn is_dir_writable_for_user(dir: &Path) -> bool { let tmp = dir.join(".tmp"); match fs::create_dir_all(&tmp) { Ok(_) => { @@ -95,7 +95,7 @@ fn install_sh( } let datadir = prefix.join(default_path(&builder.config.datadir, "share")); - let docdir = prefix.join(default_path(&builder.config.docdir, "share/doc/rust")); + let docdir = prefix.join(default_path(&builder.config.docdir, &format!("share/doc/{package}"))); let mandir = prefix.join(default_path(&builder.config.mandir, "share/man")); let libdir = prefix.join(default_path(&builder.config.libdir, "lib")); let bindir = prefix.join(&builder.config.bindir); // Default in config.rs diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs index 836ac3de94d..9622321a74e 100644 --- a/src/bootstrap/src/core/build_steps/llvm.rs +++ b/src/bootstrap/src/core/build_steps/llvm.rs @@ -110,7 +110,7 @@ pub fn prebuilt_llvm_config( let smart_stamp_hash = STAMP_HASH_MEMO.get_or_init(|| { generate_smart_stamp_hash( &builder.config.src.join("src/llvm-project"), - &builder.in_tree_llvm_info.sha().unwrap_or_default(), + builder.in_tree_llvm_info.sha().unwrap_or_default(), ) }); @@ -289,7 +289,7 @@ impl Step for Llvm { let _guard = builder.msg_unstaged(Kind::Build, "LLVM", target); t!(stamp.remove()); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); t!(fs::create_dir_all(&out_dir)); // https://llvm.org/docs/CMake.html @@ -355,7 +355,7 @@ impl Step for Llvm { cfg.define("LLVM_BUILD_RUNTIME", "No"); } if let Some(path) = builder.config.llvm_profile_use.as_ref() { - cfg.define("LLVM_PROFDATA_FILE", &path); + cfg.define("LLVM_PROFDATA_FILE", path); } // Disable zstd to avoid a dependency on libzstd.so. @@ -643,7 +643,7 @@ fn configure_cmake( let sanitize_cc = |cc: &Path| { if target.is_msvc() { - OsString::from(cc.to_str().unwrap().replace("\\", "/")) + OsString::from(cc.to_str().unwrap().replace('\\', "/")) } else { cc.as_os_str().to_owned() } @@ -808,10 +808,10 @@ fn configure_llvm(builder: &Builder<'_>, target: TargetSelection, cfg: &mut cmak // Adapted from https://github.com/alexcrichton/cc-rs/blob/fba7feded71ee4f63cfe885673ead6d7b4f2f454/src/lib.rs#L2347-L2365 fn get_var(var_base: &str, host: &str, target: &str) -> Option<OsString> { let kind = if host == target { "HOST" } else { "TARGET" }; - let target_u = target.replace("-", "_"); - env::var_os(&format!("{var_base}_{target}")) - .or_else(|| env::var_os(&format!("{}_{}", var_base, target_u))) - .or_else(|| env::var_os(&format!("{}_{}", kind, var_base))) + let target_u = target.replace('-', "_"); + env::var_os(format!("{var_base}_{target}")) + .or_else(|| env::var_os(format!("{}_{}", var_base, target_u))) + .or_else(|| env::var_os(format!("{}_{}", kind, var_base))) .or_else(|| env::var_os(var_base)) } @@ -862,7 +862,7 @@ impl Step for Lld { } let _guard = builder.msg_unstaged(Kind::Build, "LLD", target); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); t!(fs::create_dir_all(&out_dir)); let mut cfg = cmake::Config::new(builder.src.join("src/llvm-project/lld")); @@ -986,7 +986,7 @@ impl Step for Sanitizers { let _guard = builder.msg_unstaged(Kind::Build, "sanitizers", self.target); t!(stamp.remove()); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let mut cfg = cmake::Config::new(&compiler_rt_dir); cfg.profile("Release"); @@ -1051,7 +1051,7 @@ fn supported_sanitizers( .map(move |c| SanitizerRuntime { cmake_target: format!("clang_rt.{}_{}_dynamic", c, os), path: out_dir - .join(&format!("build/lib/darwin/libclang_rt.{}_{}_dynamic.dylib", c, os)), + .join(format!("build/lib/darwin/libclang_rt.{}_{}_dynamic.dylib", c, os)), name: format!("librustc-{}_rt.{}.dylib", channel, c), }) .collect() @@ -1062,7 +1062,7 @@ fn supported_sanitizers( .iter() .map(move |c| SanitizerRuntime { cmake_target: format!("clang_rt.{}-{}", c, arch), - path: out_dir.join(&format!("build/lib/{}/libclang_rt.{}-{}.a", os, c, arch)), + path: out_dir.join(format!("build/lib/{}/libclang_rt.{}-{}.a", os, c, arch)), name: format!("librustc-{}_rt.{}.a", channel, c), }) .collect() @@ -1165,7 +1165,7 @@ impl Step for CrtBeginEnd { /// Build crtbegin.o/crtend.o for musl target. fn run(self, builder: &Builder<'_>) -> Self::Output { - builder.update_submodule(&Path::new("src/llvm-project")); + builder.update_submodule(Path::new("src/llvm-project")); let out_dir = builder.native_dir(self.target).join("crt"); @@ -1233,7 +1233,7 @@ impl Step for Libunwind { /// Build libunwind.a fn run(self, builder: &Builder<'_>) -> Self::Output { - builder.update_submodule(&Path::new("src/llvm-project")); + builder.update_submodule(Path::new("src/llvm-project")); if builder.config.dry_run() { return PathBuf::new(); diff --git a/src/bootstrap/src/core/build_steps/run.rs b/src/bootstrap/src/core/build_steps/run.rs index 5fa5f2d4794..27b0c7760f0 100644 --- a/src/bootstrap/src/core/build_steps/run.rs +++ b/src/bootstrap/src/core/build_steps/run.rs @@ -23,7 +23,7 @@ impl Step for ExpandYamlAnchors { fn run(self, builder: &Builder<'_>) { builder.info("Expanding YAML anchors in the GitHub Actions configuration"); builder.run_delaying_failure( - &mut builder.tool_cmd(Tool::ExpandYamlAnchors).arg("generate").arg(&builder.src), + builder.tool_cmd(Tool::ExpandYamlAnchors).arg("generate").arg(&builder.src), ); } diff --git a/src/bootstrap/src/core/build_steps/setup.rs b/src/bootstrap/src/core/build_steps/setup.rs index 5b434eddb71..74a5578b43e 100644 --- a/src/bootstrap/src/core/build_steps/setup.rs +++ b/src/bootstrap/src/core/build_steps/setup.rs @@ -8,7 +8,7 @@ use std::env::consts::EXE_SUFFIX; use std::fmt::Write as _; use std::fs::File; use std::io::Write; -use std::path::{Path, PathBuf, MAIN_SEPARATOR}; +use std::path::{Path, PathBuf, MAIN_SEPARATOR_STR}; use std::process::Command; use std::str::FromStr; use std::{fmt, fs, io}; @@ -19,7 +19,6 @@ mod tests; #[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)] pub enum Profile { Compiler, - Codegen, Library, Tools, Dist, @@ -48,7 +47,7 @@ impl Profile { pub fn all() -> impl Iterator<Item = Self> { use Profile::*; // N.B. these are ordered by how they are displayed, not alphabetically - [Library, Compiler, Codegen, Tools, Dist, None].iter().copied() + [Library, Compiler, Tools, Dist, None].iter().copied() } pub fn purpose(&self) -> String { @@ -56,7 +55,6 @@ impl Profile { match self { Library => "Contribute to the standard library", Compiler => "Contribute to the compiler itself", - Codegen => "Contribute to the compiler, and also modify LLVM or codegen", Tools => "Contribute to tools which depend on the compiler, but do not modify it directly (e.g. rustdoc, clippy, miri)", Dist => "Install Rust from source", None => "Do not modify `config.toml`" @@ -75,7 +73,6 @@ impl Profile { pub fn as_str(&self) -> &'static str { match self { Profile::Compiler => "compiler", - Profile::Codegen => "codegen", Profile::Library => "library", Profile::Tools => "tools", Profile::Dist => "dist", @@ -91,12 +88,15 @@ impl FromStr for Profile { match s { "lib" | "library" => Ok(Profile::Library), "compiler" => Ok(Profile::Compiler), - "llvm" | "codegen" => Ok(Profile::Codegen), "maintainer" | "dist" | "user" => Ok(Profile::Dist), "tools" | "tool" | "rustdoc" | "clippy" | "miri" | "rustfmt" | "rls" => { Ok(Profile::Tools) } "none" => Ok(Profile::None), + "llvm" | "codegen" => Err(format!( + "the \"llvm\" and \"codegen\" profiles have been removed,\ + use \"compiler\" instead which has the same functionality" + )), _ => Err(format!("unknown profile: '{s}'")), } } @@ -170,22 +170,13 @@ impl Step for Profile { } fn run(self, builder: &Builder<'_>) { - // During ./x.py setup once you select the codegen profile. - // The submodule will be downloaded. It does not work in the - // tarball case since they don't include Git and submodules - // are already included. - if !builder.rust_info().is_from_tarball() { - if self == Profile::Codegen { - builder.update_submodule(&Path::new("src/llvm-project")); - } - } - setup(&builder.build.config, self) + setup(&builder.build.config, self); } } pub fn setup(config: &Config, profile: Profile) { let suggestions: &[&str] = match profile { - Profile::Codegen | Profile::Compiler | Profile::None => &["check", "build", "test"], + Profile::Compiler | Profile::None => &["check", "build", "test"], Profile::Tools => &[ "check", "build", @@ -266,8 +257,7 @@ impl Step for Link { return; } let stage_path = - ["build", config.build.rustc_target_arg(), "stage1"].join(&MAIN_SEPARATOR.to_string()); - + ["build", config.build.rustc_target_arg(), "stage1"].join(MAIN_SEPARATOR_STR); if !rustup_installed() { eprintln!("`rustup` is not installed; cannot link `stage1` toolchain"); } else if stage_dir_exists(&stage_path[..]) && !config.dry_run() { @@ -285,7 +275,7 @@ fn rustup_installed() -> bool { } fn stage_dir_exists(stage_path: &str) -> bool { - match fs::create_dir(&stage_path) { + match fs::create_dir(stage_path) { Ok(_) => true, Err(_) => Path::new(&stage_path).exists(), } @@ -303,7 +293,7 @@ fn attempt_toolchain_link(stage_path: &str) { return; } - if try_link_toolchain(&stage_path) { + if try_link_toolchain(stage_path) { println!( "Added `stage1` rustup toolchain; try `cargo +stage1 build` on a separate rust project to run a newly-built toolchain" ); @@ -319,7 +309,7 @@ fn attempt_toolchain_link(stage_path: &str) { fn toolchain_is_linked() -> bool { match Command::new("rustup") - .args(&["toolchain", "list"]) + .args(["toolchain", "list"]) .stdout(std::process::Stdio::piped()) .output() { @@ -346,7 +336,7 @@ fn toolchain_is_linked() -> bool { fn try_link_toolchain(stage_path: &str) -> bool { Command::new("rustup") .stdout(std::process::Stdio::null()) - .args(&["toolchain", "link", "stage1", &stage_path]) + .args(["toolchain", "link", "stage1", stage_path]) .output() .map_or(false, |output| output.status.success()) } @@ -375,7 +365,7 @@ fn ensure_stage1_toolchain_placeholder_exists(stage_path: &str) -> bool { return false; } - return true; + true } // Used to get the path for `Subcommand::Setup` @@ -478,13 +468,13 @@ impl Step for Hook { if config.dry_run() { return; } - t!(install_git_hook_maybe(&config)); + t!(install_git_hook_maybe(config)); } } // install a git hook to automatically run tidy, if they want fn install_git_hook_maybe(config: &Config) -> io::Result<()> { - let git = t!(config.git().args(&["rev-parse", "--git-common-dir"]).output().map(|output| { + let git = t!(config.git().args(["rev-parse", "--git-common-dir"]).output().map(|output| { assert!(output.status.success(), "failed to run `git`"); PathBuf::from(t!(String::from_utf8(output.stdout)).trim()) })); @@ -550,7 +540,7 @@ impl Step for Vscode { if config.dry_run() { return; } - while !t!(create_vscode_settings_maybe(&config)) {} + while !t!(create_vscode_settings_maybe(config)) {} } } @@ -617,7 +607,7 @@ fn create_vscode_settings_maybe(config: &Config) -> io::Result<bool> { } _ => "Created", }; - fs::write(&vscode_settings, &RUST_ANALYZER_SETTINGS)?; + fs::write(&vscode_settings, RUST_ANALYZER_SETTINGS)?; println!("{verb} `.vscode/settings.json`"); } else { println!("\n{RUST_ANALYZER_SETTINGS}"); diff --git a/src/bootstrap/src/core/build_steps/suggest.rs b/src/bootstrap/src/core/build_steps/suggest.rs index 93da27560c6..c057fa9a566 100644 --- a/src/bootstrap/src/core/build_steps/suggest.rs +++ b/src/bootstrap/src/core/build_steps/suggest.rs @@ -36,7 +36,7 @@ pub fn suggest(builder: &Builder<'_>, run: bool) { // this code expects one suggestion per line in the following format: // <x_subcommand> {some number of flags} [optional stage number] let cmd = sections.next().unwrap(); - let stage = sections.next_back().map(|s| str::parse(s).ok()).flatten(); + let stage = sections.next_back().and_then(|s| str::parse(s).ok()); let paths: Vec<PathBuf> = sections.map(|p| PathBuf::from_str(p).unwrap()).collect(); (cmd, stage, paths) diff --git a/src/bootstrap/src/core/build_steps/synthetic_targets.rs b/src/bootstrap/src/core/build_steps/synthetic_targets.rs index 9acdcaeb517..a00835402ec 100644 --- a/src/bootstrap/src/core/build_steps/synthetic_targets.rs +++ b/src/bootstrap/src/core/build_steps/synthetic_targets.rs @@ -79,7 +79,7 @@ fn create_synthetic_target( customize(spec_map); - std::fs::write(&path, &serde_json::to_vec_pretty(&spec).unwrap()).unwrap(); + std::fs::write(&path, serde_json::to_vec_pretty(&spec).unwrap()).unwrap(); let target = TargetSelection::create_synthetic(&name, path.to_str().unwrap()); crate::utils::cc_detect::find_target(builder, target); diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs index 0c7e751c8da..791f847a866 100644 --- a/src/bootstrap/src/core/build_steps/test.rs +++ b/src/bootstrap/src/core/build_steps/test.rs @@ -156,7 +156,7 @@ You can skip linkcheck with --skip src/tools/linkchecker" // Run the linkchecker. let _guard = builder.msg(Kind::Test, compiler.stage, "Linkcheck", bootstrap_host, bootstrap_host); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); builder.run_delaying_failure(linkchecker.arg(builder.out.join(host.triple).join("doc"))); } @@ -253,15 +253,15 @@ impl Step for Cargotest { let out_dir = builder.out.join("ct"); t!(fs::create_dir_all(&out_dir)); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let mut cmd = builder.tool_cmd(Tool::CargoTest); - let mut cmd = cmd + let cmd = cmd .arg(&cargo) .arg(&out_dir) .args(builder.config.test_args()) .env("RUSTC", builder.rustc(compiler)) .env("RUSTDOC", builder.rustdoc(compiler)); - add_rustdoc_cargo_linker_args(&mut cmd, builder, compiler.host, LldThreads::No); + add_rustdoc_cargo_linker_args(cmd, builder, compiler.host, LldThreads::No); builder.run_delaying_failure(cmd); } } @@ -322,7 +322,7 @@ impl Step for Cargo { builder, ); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); add_flags_and_try_run_tests(builder, &mut cargo); } } @@ -474,7 +474,7 @@ impl Step for RustDemangler { ); let dir = testdir(builder, compiler.host); - t!(fs::create_dir_all(&dir)); + t!(fs::create_dir_all(dir)); cargo.env("RUST_DEMANGLER_DRIVER_PATH", rust_demangler); cargo.add_rustc_lib_path(builder); @@ -525,7 +525,7 @@ impl Miri { // Tell `cargo miri setup` where to find the sources. cargo.env("MIRI_LIB_SRC", builder.src.join("library")); // Tell it where to find Miri. - cargo.env("MIRI", &miri); + cargo.env("MIRI", miri); // Tell it where to put the sysroot. cargo.env("MIRI_SYSROOT", &miri_sysroot); // Debug things. @@ -637,7 +637,7 @@ impl Step for Miri { // does not understand the flags added by `add_flags_and_try_run_test`. let mut cargo = prepare_cargo_test(cargo, &[], &[], "miri", compiler, target, builder); { - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); builder.run(&mut cargo); } @@ -649,11 +649,11 @@ impl Step for Miri { // `MIRI_SKIP_UI_CHECKS` and `RUSTC_BLESS` are incompatible cargo.env_remove("RUSTC_BLESS"); // Optimizations can change error locations and remove UB so don't run `fail` tests. - cargo.args(&["tests/pass", "tests/panic"]); + cargo.args(["tests/pass", "tests/panic"]); let mut cargo = prepare_cargo_test(cargo, &[], &[], "miri", compiler, target, builder); { - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); builder.run(&mut cargo); } } @@ -693,7 +693,7 @@ impl Step for Miri { let mut cargo = Command::from(cargo); { - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); builder.run(&mut cargo); } } @@ -946,7 +946,7 @@ impl Step for RustdocJSNotStd { } fn get_browser_ui_test_version_inner(npm: &Path, global: bool) -> Option<String> { - let mut command = Command::new(&npm); + let mut command = Command::new(npm); command.arg("list").arg("--parseable").arg("--long").arg("--depth=0"); if global { command.arg("--global"); @@ -954,7 +954,7 @@ fn get_browser_ui_test_version_inner(npm: &Path, global: bool) -> Option<String> let lines = command .output() .map(|output| String::from_utf8_lossy(&output.stdout).into_owned()) - .unwrap_or(String::new()); + .unwrap_or_default(); lines .lines() .find_map(|l| l.split(':').nth(1)?.strip_prefix("browser-ui-test@")) @@ -1048,7 +1048,7 @@ impl Step for RustdocGUI { cmd.arg("--npm").arg(npm); } - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let _guard = builder.msg_sysroot_tool( Kind::Test, self.compiler.stage, @@ -1096,7 +1096,7 @@ impl Step for Tidy { cmd.arg(format!("--extra-checks={s}")); } let mut args = std::env::args_os(); - if let Some(_) = args.find(|arg| arg == OsStr::new("--")) { + if args.any(|arg| arg == OsStr::new("--")) { cmd.arg("--"); cmd.args(args); } @@ -1116,7 +1116,7 @@ HELP: to skip test's attempt to check tidiness, pass `--skip src/tools/tidy` to ); crate::exit!(1); } - crate::core::build_steps::format::format(&builder, !builder.config.cmd.bless(), &[]); + crate::core::build_steps::format::format(builder, !builder.config.cmd.bless(), &[]); } builder.info("tidy check"); @@ -1171,7 +1171,7 @@ impl Step for ExpandYamlAnchors { } builder.info("Ensuring the YAML anchors in the GitHub Actions config were expanded"); builder.run_delaying_failure( - &mut builder.tool_cmd(Tool::ExpandYamlAnchors).arg("check").arg(&builder.src), + builder.tool_cmd(Tool::ExpandYamlAnchors).arg("check").arg(&builder.src), ); } @@ -1759,7 +1759,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the for exclude in &builder.config.skip { cmd.arg("--skip"); - cmd.arg(&exclude); + cmd.arg(exclude); } // Get paths from cmd args @@ -1780,7 +1780,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the // so the correct filters are passed to libtest if cfg!(windows) { let test_args_win: Vec<String> = - test_args.iter().map(|s| s.replace("/", "\\")).collect(); + test_args.iter().map(|s| s.replace('/', "\\")).collect(); cmd.args(&test_args_win); } else { cmd.args(&test_args); @@ -1900,7 +1900,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the // Note that if we encounter `PATH` we make sure to append to our own `PATH` // rather than stomp over it. if !builder.config.dry_run() && target.is_msvc() { - for &(ref k, ref v) in builder.cc.borrow()[&target].env() { + for (k, v) in builder.cc.borrow()[&target].env() { if k != "PATH" { cmd.env(k, v); } @@ -1996,7 +1996,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the let _group = builder.msg( Kind::Test, compiler.stage, - &format!("compiletest suite={suite} mode={mode}"), + format!("compiletest suite={suite} mode={mode}"), compiler.host, target, ); @@ -2022,7 +2022,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the "Check compiletest suite={} mode={} compare_mode={} ({} -> {})", suite, mode, compare_mode, &compiler.host, target )); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); try_run_tests(builder, &mut cmd, false); } } @@ -2094,7 +2094,7 @@ impl BookTest { compiler.host, compiler.host, ); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let toolstate = if builder.run_delaying_failure(&mut rustbook_cmd) { ToolState::TestPass } else { @@ -2111,12 +2111,12 @@ impl BookTest { builder.ensure(compile::Std::new(compiler, host)); let _guard = - builder.msg(Kind::Test, compiler.stage, &format!("book {}", self.name), host, host); + builder.msg(Kind::Test, compiler.stage, format!("book {}", self.name), host, host); // Do a breadth-first traversal of the `src/doc` directory and just run // tests for all files that end in `*.md` let mut stack = vec![builder.src.join(self.path)]; - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let mut files = Vec::new(); while let Some(p) = stack.pop() { if p.is_dir() { @@ -2227,7 +2227,7 @@ impl Step for ErrorIndex { let guard = builder.msg(Kind::Test, compiler.stage, "error-index", compiler.host, compiler.host); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); builder.run_quiet(&mut tool); drop(guard); // The tests themselves need to link to std, so make sure it is @@ -2315,11 +2315,8 @@ impl Step for CrateLibrustc { let builder = run.builder; let host = run.build_triple(); let compiler = builder.compiler_for(builder.top_stage, host, host); - let crates = run - .paths - .iter() - .map(|p| builder.crate_paths[&p.assert_single_path().path].clone()) - .collect(); + let crates = + run.paths.iter().map(|p| builder.crate_paths[&p.assert_single_path().path]).collect(); builder.ensure(CrateLibrustc { compiler, target: run.target, crates }); } @@ -2351,7 +2348,7 @@ fn run_cargo_test<'a>( ) -> bool { let mut cargo = prepare_cargo_test(cargo, libtest_args, crates, primary_crate, compiler, target, builder); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); let _group = description.into().and_then(|what| { builder.msg_sysroot_tool(Kind::Test, compiler.stage, what, compiler.host, target) }); @@ -2406,7 +2403,7 @@ fn prepare_cargo_test( if krate.has_lib { cargo.arg("--lib"); } - cargo.args(&["--bins", "--examples", "--tests", "--benches"]); + cargo.args(["--bins", "--examples", "--tests", "--benches"]); } DocTests::Yes => {} } @@ -2468,11 +2465,8 @@ impl Step for Crate { let builder = run.builder; let host = run.build_triple(); let compiler = builder.compiler_for(builder.top_stage, host, host); - let crates = run - .paths - .iter() - .map(|p| builder.crate_paths[&p.assert_single_path().path].clone()) - .collect(); + let crates = + run.paths.iter().map(|p| builder.crate_paths[&p.assert_single_path().path]).collect(); builder.ensure(Crate { compiler, target: run.target, mode: Mode::Std, crates }); } @@ -2844,11 +2838,11 @@ impl Step for Bootstrap { let compiler = builder.compiler(0, host); let _guard = builder.msg(Kind::Test, 0, "bootstrap", host, host); - let mut check_bootstrap = Command::new(&builder.python()); + let mut check_bootstrap = Command::new(builder.python()); check_bootstrap .args(["-m", "unittest", "bootstrap_test.py"]) .env("BUILD_DIR", &builder.out) - .env("BUILD_PLATFORM", &builder.build.build.triple) + .env("BUILD_PLATFORM", builder.build.build.triple) .current_dir(builder.src.join("src/bootstrap/")); // NOTE: we intentionally don't pass test_args here because the args for unittest and cargo test are mutually incompatible. // Use `python -m unittest` manually if you want to pass arguments. @@ -3171,7 +3165,7 @@ impl Step for CodegenCranelift { &compiler.host, target )); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); // FIXME handle vendoring for source tarballs before removing the --skip-test below let download_dir = builder.out.join("cg_clif_download"); @@ -3300,7 +3294,7 @@ impl Step for CodegenGCC { &compiler.host, target )); - let _time = helpers::timeit(&builder); + let _time = helpers::timeit(builder); // FIXME: Uncomment the `prepare` command below once vendoring is implemented. /* diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs index a3daf22c9a9..ba867a04ec5 100644 --- a/src/bootstrap/src/core/build_steps/tool.rs +++ b/src/bootstrap/src/core/build_steps/tool.rs @@ -819,7 +819,7 @@ impl<'a> Builder<'a> { if compiler.host.is_msvc() { let curpaths = env::var_os("PATH").unwrap_or_default(); let curpaths = env::split_paths(&curpaths).collect::<Vec<_>>(); - for &(ref k, ref v) in self.cc.borrow()[&compiler.host].env() { + for (k, v) in self.cc.borrow()[&compiler.host].env() { if k != "PATH" { continue; } diff --git a/src/bootstrap/src/core/build_steps/toolstate.rs b/src/bootstrap/src/core/build_steps/toolstate.rs index a451f92b6bc..deb782cad0c 100644 --- a/src/bootstrap/src/core/build_steps/toolstate.rs +++ b/src/bootstrap/src/core/build_steps/toolstate.rs @@ -346,7 +346,7 @@ fn prepare_toolstate_config(token: &str) { let credential = format!("https://{token}:x-oauth-basic@github.com\n",); let git_credential_path = PathBuf::from(t!(env::var("HOME"))).join(".git-credentials"); - t!(fs::write(&git_credential_path, credential)); + t!(fs::write(git_credential_path, credential)); } /// Reads the latest toolstate from the toolstate repo. @@ -389,7 +389,7 @@ fn commit_toolstate_change(current_toolstate: &ToolstateData) { // Upload the test results (the new commit-to-toolstate mapping) to the toolstate repo. // This does *not* change the "current toolstate"; that only happens post-landing // via `src/ci/docker/publish_toolstate.sh`. - publish_test_results(¤t_toolstate); + publish_test_results(current_toolstate); // `git commit` failing means nothing to commit. let status = t!(Command::new("git") diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs index 2c4013d78bf..97819403ab7 100644 --- a/src/bootstrap/src/core/builder.rs +++ b/src/bootstrap/src/core/builder.rs @@ -290,7 +290,7 @@ impl PathSet { const PATH_REMAP: &[(&str, &str)] = &[("rust-analyzer-proc-macro-srv", "proc-macro-srv-cli")]; -fn remap_paths(paths: &mut Vec<&Path>) { +fn remap_paths(paths: &mut [&Path]) { for path in paths.iter_mut() { for &(search, replace) in PATH_REMAP { if path.to_str() == Some(search) { @@ -329,7 +329,7 @@ impl StepDescription { } fn is_excluded(&self, builder: &Builder<'_>, pathset: &PathSet) -> bool { - if builder.config.skip.iter().any(|e| pathset.has(&e, builder.kind)) { + if builder.config.skip.iter().any(|e| pathset.has(e, builder.kind)) { if !matches!(builder.config.dry_run, DryRun::SelfCheck) { println!("Skipping {pathset:?} because it is excluded"); } @@ -369,8 +369,7 @@ impl StepDescription { } // strip CurDir prefix if present - let mut paths: Vec<_> = - paths.into_iter().map(|p| p.strip_prefix(".").unwrap_or(p)).collect(); + let mut paths: Vec<_> = paths.iter().map(|p| p.strip_prefix(".").unwrap_or(p)).collect(); remap_paths(&mut paths); @@ -378,7 +377,7 @@ impl StepDescription { // (This is separate from the loop below to avoid having to handle multiple paths in `is_suite_path` somehow.) paths.retain(|path| { for (desc, should_run) in v.iter().zip(&should_runs) { - if let Some(suite) = should_run.is_suite_path(&path) { + if let Some(suite) = should_run.is_suite_path(path) { desc.maybe_run(builder, vec![suite.clone()]); return false; } @@ -537,7 +536,7 @@ impl<'a> ShouldRun<'a> { .iter() .map(|p| { // assert only if `p` isn't submodule - if submodules_paths.iter().find(|sm_p| p.contains(*sm_p)).is_none() { + if !submodules_paths.iter().any(|sm_p| p.contains(sm_p)) { assert!( self.builder.src.join(p).exists(), "`should_run.paths` should correspond to real on-disk paths - use `alias` if there is no relevant path: {}", @@ -858,6 +857,11 @@ impl<'a> Builder<'a> { Kind::Install => describe!( install::Docs, install::Std, + // During the Rust compiler (rustc) installation process, we copy the entire sysroot binary + // path (build/host/stage2/bin). Since the building tools also make their copy in the sysroot + // binary path, we must install rustc before the tools. Otherwise, the rust-installer will + // install the same binaries twice for each tool, leaving backup files (*.old) as a result. + install::Rustc, install::Cargo, install::RustAnalyzer, install::Rustfmt, @@ -866,7 +870,6 @@ impl<'a> Builder<'a> { install::Miri, install::LlvmTools, install::Src, - install::Rustc, ), Kind::Run => describe!( run::ExpandYamlAnchors, @@ -1204,7 +1207,7 @@ impl<'a> Builder<'a> { } pub fn rustdoc_cmd(&self, compiler: Compiler) -> Command { - let mut cmd = Command::new(&self.bootstrap_out.join("rustdoc")); + let mut cmd = Command::new(self.bootstrap_out.join("rustdoc")); cmd.env("RUSTC_STAGE", compiler.stage.to_string()) .env("RUSTC_SYSROOT", self.sysroot(compiler)) // Note that this is *not* the sysroot_libdir because rustdoc must be linked @@ -1347,7 +1350,7 @@ impl<'a> Builder<'a> { // See comment in rustc_llvm/build.rs for why this is necessary, largely llvm-config // needs to not accidentally link to libLLVM in stage0/lib. - cargo.env("REAL_LIBRARY_PATH_VAR", &helpers::dylib_path_var()); + cargo.env("REAL_LIBRARY_PATH_VAR", helpers::dylib_path_var()); if let Some(e) = env::var_os(helpers::dylib_path_var()) { cargo.env("REAL_LIBRARY_PATH", e); } @@ -1616,8 +1619,8 @@ impl<'a> Builder<'a> { .env("RUSTBUILD_NATIVE_DIR", self.native_dir(target)) .env("RUSTC_REAL", self.rustc(compiler)) .env("RUSTC_STAGE", stage.to_string()) - .env("RUSTC_SYSROOT", &sysroot) - .env("RUSTC_LIBDIR", &libdir) + .env("RUSTC_SYSROOT", sysroot) + .env("RUSTC_LIBDIR", libdir) .env("RUSTDOC", self.bootstrap_out.join("rustdoc")) .env( "RUSTDOC_REAL", @@ -1750,7 +1753,7 @@ impl<'a> Builder<'a> { cargo.env("RUSTC_BOOTSTRAP", "1"); if self.config.dump_bootstrap_shims { - prepare_behaviour_dump_dir(&self.build); + prepare_behaviour_dump_dir(self.build); cargo .env("DUMP_BOOTSTRAP_SHIMS", self.build.out.join("bootstrap-shims-dump")) @@ -1789,7 +1792,7 @@ impl<'a> Builder<'a> { // platform-specific environment variable as a workaround. if mode == Mode::ToolRustc || mode == Mode::Codegen { if let Some(llvm_config) = self.llvm_config(target) { - let llvm_libdir = output(Command::new(&llvm_config).arg("--libdir")); + let llvm_libdir = output(Command::new(llvm_config).arg("--libdir")); add_link_lib_path(vec![llvm_libdir.trim().into()], &mut cargo); } } @@ -1870,6 +1873,10 @@ impl<'a> Builder<'a> { rustflags.arg("-Wrustc::internal"); } + if self.config.rust_frame_pointers { + rustflags.arg("-Cforce-frame-pointers=true"); + } + // If Control Flow Guard is enabled, pass the `control-flow-guard` flag to rustc // when compiling the standard library, since this might be linked into the final outputs // produced by rustc. Since this mitigation is only available on Windows, only enable it @@ -2072,7 +2079,7 @@ impl<'a> Builder<'a> { if self.config.print_step_timings && !self.config.dry_run() { let step_string = format!("{step:?}"); - let brace_index = step_string.find("{").unwrap_or(0); + let brace_index = step_string.find('{').unwrap_or(0); let type_string = type_name::<S>(); println!( "[TIMING] {} {} -- {}.{:03}", @@ -2421,7 +2428,7 @@ impl Cargo { _ => s.display().to_string(), } }; - let triple_underscored = target.triple.replace("-", "_"); + let triple_underscored = target.triple.replace('-', "_"); let cc = ccacheify(&builder.cc(target)); self.command.env(format!("CC_{triple_underscored}"), &cc); diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs index 05b9c734018..927d46c67a9 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs @@ -256,6 +256,7 @@ pub struct Config { pub rust_split_debuginfo: SplitDebuginfo, pub rust_rpath: bool, pub rust_strip: bool, + pub rust_frame_pointers: bool, pub rust_stack_protector: Option<String>, pub rustc_parallel: bool, pub rustc_default_linker: Option<String>, @@ -467,7 +468,7 @@ pub struct TargetSelectionList(Vec<TargetSelection>); pub fn target_selection_list(s: &str) -> Result<TargetSelectionList, String> { Ok(TargetSelectionList( - s.split(",").filter(|s| !s.is_empty()).map(TargetSelection::from_user).collect(), + s.split(',').filter(|s| !s.is_empty()).map(TargetSelection::from_user).collect(), )) } @@ -962,10 +963,10 @@ impl<'de> serde::de::Visitor<'de> for OptimizeVisitor { where E: serde::de::Error, { - if ["s", "z"].iter().find(|x| **x == value).is_some() { + if matches!(value, "s" | "z") { Ok(RustOptimize::String(value.to_string())) } else { - Err(format_optimize_error_msg(value)).map_err(serde::de::Error::custom) + Err(serde::de::Error::custom(format_optimize_error_msg(value))) } } @@ -976,7 +977,7 @@ impl<'de> serde::de::Visitor<'de> for OptimizeVisitor { if matches!(value, 0..=3) { Ok(RustOptimize::Int(value as u8)) } else { - Err(format_optimize_error_msg(value)).map_err(serde::de::Error::custom) + Err(serde::de::Error::custom(format_optimize_error_msg(value))) } } @@ -1083,6 +1084,7 @@ define_config! { musl_root: Option<String> = "musl-root", rpath: Option<bool> = "rpath", strip: Option<bool> = "strip", + frame_pointers: Option<bool> = "frame-pointers", stack_protector: Option<String> = "stack-protector", verbose_tests: Option<bool> = "verbose-tests", optimize_tests: Option<bool> = "optimize-tests", @@ -1142,41 +1144,44 @@ define_config! { impl Config { pub fn default_opts() -> Config { - let mut config = Config::default(); - config.bypass_bootstrap_lock = false; - config.llvm_optimize = true; - config.ninja_in_file = true; - config.llvm_static_stdcpp = false; - config.backtrace = true; - config.rust_optimize = RustOptimize::Bool(true); - config.rust_optimize_tests = true; - config.submodules = None; - config.docs = true; - config.docs_minification = true; - config.rust_rpath = true; - config.rust_strip = false; - config.channel = "dev".to_string(); - config.codegen_tests = true; - config.rust_dist_src = true; - config.rust_codegen_backends = vec![INTERNER.intern_str("llvm")]; - config.deny_warnings = true; - config.bindir = "bin".into(); - config.dist_include_mingw_linker = true; - config.dist_compression_profile = "fast".into(); - config.rustc_parallel = true; - - config.stdout_is_tty = std::io::stdout().is_terminal(); - config.stderr_is_tty = std::io::stderr().is_terminal(); - - // set by build.rs - config.build = TargetSelection::from_user(&env!("BUILD_TRIPLE")); - - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - // Undo `src/bootstrap` - config.src = manifest_dir.parent().unwrap().parent().unwrap().to_owned(); - config.out = PathBuf::from("build"); - - config + Config { + bypass_bootstrap_lock: false, + llvm_optimize: true, + ninja_in_file: true, + llvm_static_stdcpp: false, + backtrace: true, + rust_optimize: RustOptimize::Bool(true), + rust_optimize_tests: true, + submodules: None, + docs: true, + docs_minification: true, + rust_rpath: true, + rust_strip: false, + channel: "dev".to_string(), + codegen_tests: true, + rust_dist_src: true, + rust_codegen_backends: vec![INTERNER.intern_str("llvm")], + deny_warnings: true, + bindir: "bin".into(), + dist_include_mingw_linker: true, + dist_compression_profile: "fast".into(), + rustc_parallel: true, + + stdout_is_tty: std::io::stdout().is_terminal(), + stderr_is_tty: std::io::stderr().is_terminal(), + + // set by build.rs + build: TargetSelection::from_user(env!("BUILD_TRIPLE")), + + src: { + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + // Undo `src/bootstrap` + manifest_dir.parent().unwrap().parent().unwrap().to_owned() + }, + out: PathBuf::from("build"), + + ..Default::default() + } } pub fn parse(args: &[String]) -> Config { @@ -1202,7 +1207,7 @@ impl Config { } pub(crate) fn parse_inner(args: &[String], get_toml: impl Fn(&Path) -> TomlConfig) -> Config { - let mut flags = Flags::parse(&args); + let mut flags = Flags::parse(args); let mut config = Config::default_opts(); // Set flags. @@ -1250,7 +1255,7 @@ impl Config { // Bootstrap is quite bad at handling /? in front of paths let src = match s.strip_prefix("\\\\?\\") { Some(p) => PathBuf::from(p), - None => PathBuf::from(git_root), + None => git_root, }; // If this doesn't have at least `stage0.json`, we guessed wrong. This can happen when, // for example, the build directory is inside of another unrelated git directory. @@ -1276,7 +1281,7 @@ impl Config { .to_path_buf(); } - let stage0_json = t!(std::fs::read(&config.src.join("src").join("stage0.json"))); + let stage0_json = t!(std::fs::read(config.src.join("src").join("stage0.json"))); config.stage0_metadata = t!(serde_json::from_slice::<Stage0Metadata>(&stage0_json)); @@ -1322,8 +1327,7 @@ impl Config { let mut override_toml = TomlConfig::default(); for option in flags.set.iter() { fn get_table(option: &str) -> Result<TomlConfig, toml::de::Error> { - toml::from_str(&option) - .and_then(|table: toml::Value| TomlConfig::deserialize(table)) + toml::from_str(option).and_then(|table: toml::Value| TomlConfig::deserialize(table)) } let mut err = match get_table(option) { @@ -1335,7 +1339,7 @@ impl Config { }; // We want to be able to set string values without quotes, // like in `configure.py`. Try adding quotes around the right hand side - if let Some((key, value)) = option.split_once("=") { + if let Some((key, value)) = option.split_once('=') { if !value.contains('"') { match get_table(&format!(r#"{key}="{value}""#)) { Ok(v) => { @@ -1561,6 +1565,7 @@ impl Config { download_rustc, lto, validate_mir_opts, + frame_pointers, stack_protector, strip, lld_mode, @@ -1609,6 +1614,7 @@ impl Config { set(&mut config.codegen_tests, codegen_tests); set(&mut config.rust_rpath, rpath); set(&mut config.rust_strip, strip); + set(&mut config.rust_frame_pointers, frame_pointers); config.rust_stack_protector = stack_protector; set(&mut config.jemalloc, jemalloc); set(&mut config.test_compare_mode, test_compare_mode); @@ -1656,7 +1662,7 @@ impl Config { llvm_libunwind.map(|v| v.parse().expect("failed to parse rust.llvm-libunwind")); if let Some(ref backends) = codegen_backends { - let available_backends = vec!["llvm", "cranelift", "gcc"]; + let available_backends = ["llvm", "cranelift", "gcc"]; config.rust_codegen_backends = backends.iter().map(|s| { if let Some(backend) = s.strip_prefix(CODEGEN_BACKEND_PREFIX) { @@ -1804,7 +1810,7 @@ impl Config { let mut target = Target::from_triple(&triple); if let Some(ref s) = cfg.llvm_config { - if config.download_rustc_commit.is_some() && triple == &*config.build.triple { + if config.download_rustc_commit.is_some() && triple == *config.build.triple { panic!( "setting llvm_config for the host is incompatible with download-rustc" ); @@ -1843,7 +1849,7 @@ impl Config { target.rpath = cfg.rpath; if let Some(ref backends) = cfg.codegen_backends { - let available_backends = vec!["llvm", "cranelift", "gcc"]; + let available_backends = ["llvm", "cranelift", "gcc"]; target.codegen_backends = Some(backends.iter().map(|s| { if let Some(backend) = s.strip_prefix(CODEGEN_BACKEND_PREFIX) { @@ -1870,7 +1876,7 @@ impl Config { let build_target = config .target_config .entry(config.build) - .or_insert_with(|| Target::from_triple(&triple)); + .or_insert_with(|| Target::from_triple(triple)); check_ci_llvm!(build_target.llvm_config); check_ci_llvm!(build_target.llvm_filecheck); @@ -2204,7 +2210,7 @@ impl Config { } pub fn sanitizers_enabled(&self, target: TargetSelection) -> bool { - self.target_config.get(&target).map(|t| t.sanitizers).flatten().unwrap_or(self.sanitizers) + self.target_config.get(&target).and_then(|t| t.sanitizers).unwrap_or(self.sanitizers) } pub fn needs_sanitizer_runtime_built(&self, target: TargetSelection) -> bool { @@ -2239,7 +2245,7 @@ impl Config { } pub fn rpath_enabled(&self, target: TargetSelection) -> bool { - self.target_config.get(&target).map(|t| t.rpath).flatten().unwrap_or(self.rust_rpath) + self.target_config.get(&target).and_then(|t| t.rpath).unwrap_or(self.rust_rpath) } pub fn llvm_enabled(&self, target: TargetSelection) -> bool { @@ -2270,7 +2276,7 @@ impl Config { } pub fn default_codegen_backend(&self, target: TargetSelection) -> Option<Interned<String>> { - self.codegen_backends(target).get(0).cloned() + self.codegen_backends(target).first().cloned() } pub fn git_config(&self) -> GitConfig<'_> { @@ -2299,9 +2305,9 @@ impl Config { .next() .unwrap() .to_owned(); - let rustc_version = Version::parse(&rustc_output.trim()).unwrap(); + let rustc_version = Version::parse(rustc_output.trim()).unwrap(); let source_version = - Version::parse(&fs::read_to_string(self.src.join("src/version")).unwrap().trim()) + Version::parse(fs::read_to_string(self.src.join("src/version")).unwrap().trim()) .unwrap(); if !(source_version == rustc_version || (source_version.major == rustc_version.major @@ -2329,7 +2335,7 @@ impl Config { }; // Handle running from a directory other than the top level - let top_level = output(self.git().args(&["rev-parse", "--show-toplevel"])); + let top_level = output(self.git().args(["rev-parse", "--show-toplevel"])); let top_level = top_level.trim_end(); let compiler = format!("{top_level}/compiler/"); let library = format!("{top_level}/library/"); @@ -2340,7 +2346,7 @@ impl Config { self.git() .arg("rev-list") .arg(format!("--author={}", self.stage0_metadata.config.git_merge_commit_email)) - .args(&["-n1", "--first-parent", "HEAD"]), + .args(["-n1", "--first-parent", "HEAD"]), ); let commit = merge_base.trim_end(); if commit.is_empty() { @@ -2354,7 +2360,7 @@ impl Config { // Warn if there were changes to the compiler or standard library since the ancestor commit. let has_changes = !t!(self .git() - .args(&["diff-index", "--quiet", &commit, "--", &compiler, &library]) + .args(["diff-index", "--quiet", commit, "--", &compiler, &library]) .status()) .success(); if has_changes { @@ -2393,7 +2399,7 @@ impl Config { // there are some untracked changes in the the given paths. false } else { - llvm::is_ci_llvm_available(&self, asserts) + llvm::is_ci_llvm_available(self, asserts) } }; match download_ci_llvm { @@ -2402,7 +2408,7 @@ impl Config { // FIXME: "if-available" is deprecated. Remove this block later (around mid 2024) // to not break builds between the recent-to-old checkouts. Some(StringOrBool::String(s)) if s == "if-available" => { - llvm::is_ci_llvm_available(&self, asserts) + llvm::is_ci_llvm_available(self, asserts) } Some(StringOrBool::String(s)) if s == "if-unchanged" => if_unchanged(), Some(StringOrBool::String(other)) => { @@ -2420,7 +2426,7 @@ impl Config { if_unchanged: bool, ) -> Option<String> { // Handle running from a directory other than the top level - let top_level = output(self.git().args(&["rev-parse", "--show-toplevel"])); + let top_level = output(self.git().args(["rev-parse", "--show-toplevel"])); let top_level = top_level.trim_end(); // Look for a version to compare to based on the current commit. @@ -2429,7 +2435,7 @@ impl Config { self.git() .arg("rev-list") .arg(format!("--author={}", self.stage0_metadata.config.git_merge_commit_email)) - .args(&["-n1", "--first-parent", "HEAD"]), + .args(["-n1", "--first-parent", "HEAD"]), ); let commit = merge_base.trim_end(); if commit.is_empty() { @@ -2442,7 +2448,7 @@ impl Config { // Warn if there were changes to the compiler or standard library since the ancestor commit. let mut git = self.git(); - git.args(&["diff-index", "--quiet", &commit, "--"]); + git.args(["diff-index", "--quiet", commit, "--"]); for path in modified_paths { git.arg(format!("{top_level}/{path}")); diff --git a/src/bootstrap/src/core/download.rs b/src/bootstrap/src/core/download.rs index b4ae3578ce3..185089a646b 100644 --- a/src/bootstrap/src/core/download.rs +++ b/src/bootstrap/src/core/download.rs @@ -159,7 +159,7 @@ impl Config { "; nix_build_succeeded = try_run( self, - Command::new("nix-build").args(&[ + Command::new("nix-build").args([ Path::new("-E"), Path::new(NIX_EXPR), Path::new("-o"), @@ -188,7 +188,7 @@ impl Config { let dynamic_linker_path = nix_deps_dir.join("nix-support/dynamic-linker"); // FIXME: can we support utf8 here? `args` doesn't accept Vec<u8>, only OsString ... let dynamic_linker = t!(String::from_utf8(t!(fs::read(dynamic_linker_path)))); - patchelf.args(&["--set-interpreter", dynamic_linker.trim_end()]); + patchelf.args(["--set-interpreter", dynamic_linker.trim_end()]); } let _ = try_run(self, patchelf.arg(fname)); @@ -218,7 +218,7 @@ impl Config { println!("downloading {url}"); // Try curl. If that fails and we are on windows, fallback to PowerShell. let mut curl = Command::new("curl"); - curl.args(&[ + curl.args([ "-y", "30", "-Y", @@ -242,7 +242,7 @@ impl Config { if self.build.contains("windows-msvc") { eprintln!("Fallback to PowerShell"); for _ in 0..3 { - if try_run(self, Command::new("PowerShell.exe").args(&[ + if try_run(self, Command::new("PowerShell.exe").args([ "/nologo", "-Command", "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;", @@ -388,7 +388,7 @@ impl Config { let bin_root = self.out.join(host.triple).join("stage0"); let clippy_stamp = bin_root.join(".clippy-stamp"); let cargo_clippy = bin_root.join("bin").join(exe("cargo-clippy", host)); - if cargo_clippy.exists() && !program_out_of_date(&clippy_stamp, &date) { + if cargo_clippy.exists() && !program_out_of_date(&clippy_stamp, date) { return cargo_clippy; } @@ -421,14 +421,14 @@ impl Config { DownloadSource::Dist, format!("rustfmt-{version}-{build}.tar.xz", build = host.triple), "rustfmt-preview", - &date, + date, "rustfmt", ); self.download_component( DownloadSource::Dist, format!("rustc-{version}-{build}.tar.xz", build = host.triple), "rustc", - &date, + date, "rustfmt", ); @@ -665,7 +665,7 @@ download-rustc = false } let llvm_root = self.ci_llvm_root(); let llvm_stamp = llvm_root.join(".llvm-stamp"); - let llvm_sha = detect_llvm_sha(&self, self.rust_info.is_managed_git_subrepository()); + let llvm_sha = detect_llvm_sha(self, self.rust_info.is_managed_git_subrepository()); let key = format!("{}{}", llvm_sha, self.llvm_assertions); if program_out_of_date(&llvm_stamp, &key) && !self.dry_run() { self.download_ci_llvm(&llvm_sha); @@ -685,11 +685,11 @@ download-rustc = false // rebuild. let now = filetime::FileTime::from_system_time(std::time::SystemTime::now()); let llvm_config = llvm_root.join("bin").join(exe("llvm-config", self.build)); - t!(filetime::set_file_times(&llvm_config, now, now)); + t!(filetime::set_file_times(llvm_config, now, now)); if self.should_fix_bins_and_dylibs() { let llvm_lib = llvm_root.join("lib"); - for entry in t!(fs::read_dir(&llvm_lib)) { + for entry in t!(fs::read_dir(llvm_lib)) { let lib = t!(entry).path(); if lib.extension().map_or(false, |ext| ext == "so") { self.fix_bin_or_dylib(&lib); diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs index 121ed88c92f..965d788bb83 100644 --- a/src/bootstrap/src/lib.rs +++ b/src/bootstrap/src/lib.rs @@ -467,7 +467,7 @@ impl Build { } // Make a symbolic link so we can use a consistent directory in the documentation. - let build_triple = build.out.join(&build.build.triple); + let build_triple = build.out.join(build.build.triple); t!(fs::create_dir_all(&build_triple)); let host = build.out.join("host"); if host.is_symlink() { @@ -491,7 +491,7 @@ impl Build { /// /// `relative_path` should be relative to the root of the git repository, not an absolute path. pub(crate) fn update_submodule(&self, relative_path: &Path) { - if !self.config.submodules(&self.rust_info()) { + if !self.config.submodules(self.rust_info()) { return; } @@ -507,11 +507,11 @@ impl Build { // check_submodule let checked_out_hash = - output(Command::new("git").args(&["rev-parse", "HEAD"]).current_dir(&absolute_path)); + output(Command::new("git").args(["rev-parse", "HEAD"]).current_dir(&absolute_path)); // update_submodules let recorded = output( Command::new("git") - .args(&["ls-tree", "HEAD"]) + .args(["ls-tree", "HEAD"]) .arg(relative_path) .current_dir(&self.config.src), ); @@ -529,7 +529,7 @@ impl Build { println!("Updating submodule {}", relative_path.display()); self.run( Command::new("git") - .args(&["submodule", "-q", "sync"]) + .args(["submodule", "-q", "sync"]) .arg(relative_path) .current_dir(&self.config.src), ); @@ -560,7 +560,7 @@ impl Build { let branch = branch.strip_prefix("heads/").unwrap_or(&branch); git.arg("-c").arg(format!("branch.{branch}.remote=origin")); } - git.args(&["submodule", "update", "--init", "--recursive", "--depth=1"]); + git.args(["submodule", "update", "--init", "--recursive", "--depth=1"]); if progress { git.arg("--progress"); } @@ -577,7 +577,7 @@ impl Build { let has_local_modifications = !self.run_cmd( BootstrapCommand::from( Command::new("git") - .args(&["diff-index", "--quiet", "HEAD"]) + .args(["diff-index", "--quiet", "HEAD"]) .current_dir(&absolute_path), ) .allow_failure() @@ -587,14 +587,14 @@ impl Build { }), ); if has_local_modifications { - self.run(Command::new("git").args(&["stash", "push"]).current_dir(&absolute_path)); + self.run(Command::new("git").args(["stash", "push"]).current_dir(&absolute_path)); } - self.run(Command::new("git").args(&["reset", "-q", "--hard"]).current_dir(&absolute_path)); - self.run(Command::new("git").args(&["clean", "-qdfx"]).current_dir(&absolute_path)); + self.run(Command::new("git").args(["reset", "-q", "--hard"]).current_dir(&absolute_path)); + self.run(Command::new("git").args(["clean", "-qdfx"]).current_dir(&absolute_path)); if has_local_modifications { - self.run(Command::new("git").args(&["stash", "pop"]).current_dir(absolute_path)); + self.run(Command::new("git").args(["stash", "pop"]).current_dir(absolute_path)); } } @@ -602,20 +602,20 @@ impl Build { /// This avoids contributors checking in a submodule change by accident. pub fn update_existing_submodules(&self) { // Avoid running git when there isn't a git checkout. - if !self.config.submodules(&self.rust_info()) { + if !self.config.submodules(self.rust_info()) { return; } let output = output( self.config .git() - .args(&["config", "--file"]) + .args(["config", "--file"]) .arg(&self.config.src.join(".gitmodules")) - .args(&["--get-regexp", "path"]), + .args(["--get-regexp", "path"]), ); for line in output.lines() { // Look for `submodule.$name.path = $path` // Sample output: `submodule.src/rust-installer.path src/tools/rust-installer` - let submodule = Path::new(line.splitn(2, ' ').nth(1).unwrap()); + let submodule = Path::new(line.split_once(' ').unwrap().1); // Don't update the submodule unless it's already been cloned. if GitInfo::new(false, submodule).is_managed_git_subrepository() { self.update_submodule(submodule); @@ -630,26 +630,26 @@ impl Build { } // Download rustfmt early so that it can be used in rust-analyzer configs. - let _ = &builder::Builder::new(&self).initial_rustfmt(); + let _ = &builder::Builder::new(self).initial_rustfmt(); // hardcoded subcommands match &self.config.cmd { Subcommand::Format { check } => { return core::build_steps::format::format( - &builder::Builder::new(&self), + &builder::Builder::new(self), *check, &self.config.paths, ); } Subcommand::Suggest { run } => { - return core::build_steps::suggest::suggest(&builder::Builder::new(&self), *run); + return core::build_steps::suggest::suggest(&builder::Builder::new(self), *run); } _ => (), } { - let builder = builder::Builder::new(&self); - if let Some(path) = builder.paths.get(0) { + let builder = builder::Builder::new(self); + if let Some(path) = builder.paths.first() { if path == Path::new("nonexistent/path/to/trigger/cargo/metadata") { return; } @@ -659,14 +659,14 @@ impl Build { if !self.config.dry_run() { { self.config.dry_run = DryRun::SelfCheck; - let builder = builder::Builder::new(&self); + let builder = builder::Builder::new(self); builder.execute_cli(); } self.config.dry_run = DryRun::Disabled; - let builder = builder::Builder::new(&self); + let builder = builder::Builder::new(self); builder.execute_cli(); } else { - let builder = builder::Builder::new(&self); + let builder = builder::Builder::new(self); builder.execute_cli(); } @@ -936,7 +936,7 @@ impl Build { static SYSROOT_CACHE: OnceLock<PathBuf> = OnceLock::new(); SYSROOT_CACHE.get_or_init(|| { let mut rustc = Command::new(&self.initial_rustc); - rustc.args(&["--print", "sysroot"]); + rustc.args(["--print", "sysroot"]); output(&mut rustc).trim().into() }) } @@ -1162,7 +1162,7 @@ impl Build { fn group(&self, msg: &str) -> Option<gha::Group> { match self.config.dry_run { DryRun::SelfCheck => None, - DryRun::Disabled | DryRun::UserSelected => Some(gha::group(&msg)), + DryRun::Disabled | DryRun::UserSelected => Some(gha::group(msg)), } } @@ -1322,7 +1322,7 @@ impl Build { .target_config .get(&target) .and_then(|t| t.musl_root.as_ref()) - .or_else(|| self.config.musl_root.as_ref()) + .or(self.config.musl_root.as_ref()) .map(|p| &**p) } @@ -1511,11 +1511,11 @@ impl Build { /// Returns the `a.b.c` version that the given package is at. fn release_num(&self, package: &str) -> String { - let toml_file_name = self.src.join(&format!("src/tools/{package}/Cargo.toml")); - let toml = t!(fs::read_to_string(&toml_file_name)); + let toml_file_name = self.src.join(format!("src/tools/{package}/Cargo.toml")); + let toml = t!(fs::read_to_string(toml_file_name)); for line in toml.lines() { if let Some(stripped) = - line.strip_prefix("version = \"").and_then(|s| s.strip_suffix("\"")) + line.strip_prefix("version = \"").and_then(|s| s.strip_suffix('"')) { return stripped.to_owned(); } @@ -1618,7 +1618,7 @@ impl Build { if src == dst { return; } - let _ = fs::remove_file(&dst); + let _ = fs::remove_file(dst); let metadata = t!(src.symlink_metadata()); let mut src = src.to_path_buf(); if metadata.file_type().is_symlink() { @@ -1908,7 +1908,7 @@ pub fn prepare_behaviour_dump_dir(build: &Build) { let dump_path = build.out.join("bootstrap-shims-dump"); - let initialized = INITIALIZED.get().unwrap_or_else(|| &false); + let initialized = INITIALIZED.get().unwrap_or(&false); if !initialized { // clear old dumps if dump_path.exists() { diff --git a/src/bootstrap/src/utils/bin_helpers.rs b/src/bootstrap/src/utils/bin_helpers.rs index 9c4e039ea69..5fbbe0bde0e 100644 --- a/src/bootstrap/src/utils/bin_helpers.rs +++ b/src/bootstrap/src/utils/bin_helpers.rs @@ -39,8 +39,7 @@ pub(crate) fn maybe_dump(dump_name: String, cmd: &Command) { if let Ok(dump_dir) = env::var("DUMP_BOOTSTRAP_SHIMS") { let dump_file = format!("{dump_dir}/{dump_name}"); - let mut file = - OpenOptions::new().create(true).write(true).append(true).open(&dump_file).unwrap(); + let mut file = OpenOptions::new().create(true).append(true).open(dump_file).unwrap(); let cmd_dump = format!("{:?}\n", cmd); let cmd_dump = cmd_dump.replace(&env::var("BUILD_OUT").unwrap(), "${BUILD_OUT}"); diff --git a/src/bootstrap/src/utils/cache.rs b/src/bootstrap/src/utils/cache.rs index 1b2aa9c234b..2b86585a9d3 100644 --- a/src/bootstrap/src/utils/cache.rs +++ b/src/bootstrap/src/utils/cache.rs @@ -64,7 +64,7 @@ unsafe impl<T> Sync for Interned<T> {} impl fmt::Display for Interned<String> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let s: &str = &*self; + let s: &str = self; f.write_str(s) } } @@ -74,7 +74,7 @@ where Self: Deref<Target = U>, { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let s: &U = &*self; + let s: &U = self; f.write_fmt(format_args!("{s:?}")) } } @@ -132,7 +132,7 @@ impl<T: Hash + Clone + Eq> TyIntern<T> { B: Eq + Hash + ToOwned<Owned = T> + ?Sized, T: Borrow<B>, { - if let Some(i) = self.set.get(&item) { + if let Some(i) = self.set.get(item) { return *i; } let item = item.to_owned(); @@ -233,7 +233,7 @@ impl Cache { let type_id = TypeId::of::<S>(); let stepcache = cache .entry(type_id) - .or_insert_with(|| Box::new(HashMap::<S, S::Output>::new())) + .or_insert_with(|| Box::<HashMap<S, S::Output>>::default()) .downcast_mut::<HashMap<S, S::Output>>() .expect("invalid type mapped"); assert!(!stepcache.contains_key(&step), "processing {step:?} a second time"); @@ -245,7 +245,7 @@ impl Cache { let type_id = TypeId::of::<S>(); let stepcache = cache .entry(type_id) - .or_insert_with(|| Box::new(HashMap::<S, S::Output>::new())) + .or_insert_with(|| Box::<HashMap<S, S::Output>>::default()) .downcast_mut::<HashMap<S, S::Output>>() .expect("invalid type mapped"); stepcache.get(step).cloned() diff --git a/src/bootstrap/src/utils/cc_detect.rs b/src/bootstrap/src/utils/cc_detect.rs index fb5b9d8c88f..ff2992bc896 100644 --- a/src/bootstrap/src/utils/cc_detect.rs +++ b/src/bootstrap/src/utils/cc_detect.rs @@ -35,7 +35,7 @@ use crate::{Build, CLang, GitRepo}; // try to infer the archiver path from the C compiler path. // In the future this logic should be replaced by calling into the `cc` crate. fn cc2ar(cc: &Path, target: TargetSelection) -> Option<PathBuf> { - if let Some(ar) = env::var_os(format!("AR_{}", target.triple.replace("-", "_"))) { + if let Some(ar) = env::var_os(format!("AR_{}", target.triple.replace('-', "_"))) { Some(PathBuf::from(ar)) } else if let Some(ar) = env::var_os("AR") { Some(PathBuf::from(ar)) @@ -172,11 +172,9 @@ fn default_compiler( // When compiling for android we may have the NDK configured in the // config.toml in which case we look there. Otherwise the default // compiler already takes into account the triple in question. - t if t.contains("android") => build - .config - .android_ndk - .as_ref() - .map(|ndk| ndk_compiler(compiler, &*target.triple, ndk)), + t if t.contains("android") => { + build.config.android_ndk.as_ref().map(|ndk| ndk_compiler(compiler, &target.triple, ndk)) + } // The default gcc version from OpenBSD may be too old, try using egcc, // which is a gcc version from ports, if this is the case. @@ -230,7 +228,7 @@ fn default_compiler( } pub(crate) fn ndk_compiler(compiler: Language, triple: &str, ndk: &Path) -> PathBuf { - let mut triple_iter = triple.split("-"); + let mut triple_iter = triple.split('-'); let triple_translated = if let Some(arch) = triple_iter.next() { let arch_new = match arch { "arm" | "armv7" | "armv7neon" | "thumbv7" | "thumbv7neon" => "armv7a", diff --git a/src/bootstrap/src/utils/change_tracker.rs b/src/bootstrap/src/utils/change_tracker.rs index ec62f9f1f8c..b813d82ca6f 100644 --- a/src/bootstrap/src/utils/change_tracker.rs +++ b/src/bootstrap/src/utils/change_tracker.rs @@ -2,6 +2,8 @@ //! with the goal of keeping developers synchronized with important modifications in //! the bootstrap. +use std::fmt::Display; + #[cfg(test)] mod tests; @@ -24,11 +26,11 @@ pub enum ChangeSeverity { Warning, } -impl ToString for ChangeSeverity { - fn to_string(&self) -> String { +impl Display for ChangeSeverity { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ChangeSeverity::Info => "INFO".to_string(), - ChangeSeverity::Warning => "WARNING".to_string(), + ChangeSeverity::Info => write!(f, "INFO"), + ChangeSeverity::Warning => write!(f, "WARNING"), } } } @@ -40,7 +42,7 @@ pub fn find_recent_config_change_ids(current_id: usize) -> Vec<ChangeInfo> { // older one); otherwise, return the full list (assuming the user provided // the incorrect change-id by accident). if let Some(config) = CONFIG_CHANGE_HISTORY.iter().max_by_key(|config| config.change_id) { - if ¤t_id > &config.change_id { + if current_id > config.change_id { return Vec::new(); } } @@ -119,4 +121,14 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[ severity: ChangeSeverity::Info, summary: "New option `target.<triple>.codegen-backends` added to config.toml.", }, + ChangeInfo { + change_id: 121203, + severity: ChangeSeverity::Info, + summary: "A new `rust.frame-pointers` option has been introduced and made the default in the compiler and codegen profiles.", + }, + ChangeInfo { + change_id: 121278, + severity: ChangeSeverity::Warning, + summary: "The \"codegen\"/\"llvm\" profile has been removed and replaced with \"compiler\", use it instead for the same behavior.", + }, ]; diff --git a/src/bootstrap/src/utils/channel.rs b/src/bootstrap/src/utils/channel.rs index e59d7f22aaa..88988c33916 100644 --- a/src/bootstrap/src/utils/channel.rs +++ b/src/bootstrap/src/utils/channel.rs @@ -97,7 +97,7 @@ impl GitInfo { pub fn version(&self, build: &Build, num: &str) -> String { let mut version = build.release(num); - if let Some(ref inner) = self.info() { + if let Some(inner) = self.info() { version.push_str(" ("); version.push_str(&inner.short_sha); version.push(' '); @@ -150,7 +150,7 @@ pub fn read_commit_info_file(root: &Path) -> Option<Info> { /// root. pub fn write_commit_info_file(root: &Path, info: &Info) { let commit_info = format!("{}\n{}\n{}\n", info.sha, info.short_sha, info.commit_date); - t!(fs::write(root.join("git-commit-info"), &commit_info)); + t!(fs::write(root.join("git-commit-info"), commit_info)); } /// Write the commit hash to the `git-commit-hash` file given the project root. diff --git a/src/bootstrap/src/utils/helpers.rs b/src/bootstrap/src/utils/helpers.rs index d1f713af917..a40ee189001 100644 --- a/src/bootstrap/src/utils/helpers.rs +++ b/src/bootstrap/src/utils/helpers.rs @@ -425,7 +425,7 @@ pub fn get_clang_cl_resource_dir(clang_cl_path: &str) -> PathBuf { // Similar to how LLVM does it, to find clang's library runtime directory: // - we ask `clang-cl` to locate the `clang_rt.builtins` lib. let mut builtins_locator = Command::new(clang_cl_path); - builtins_locator.args(&["/clang:-print-libgcc-file-name", "/clang:--rtlib=compiler-rt"]); + builtins_locator.args(["/clang:-print-libgcc-file-name", "/clang:--rtlib=compiler-rt"]); let clang_rt_builtins = output(&mut builtins_locator); let clang_rt_builtins = Path::new(clang_rt_builtins.trim()); @@ -475,7 +475,7 @@ pub fn dir_is_empty(dir: &Path) -> bool { /// the "y" part from the string. pub fn extract_beta_rev(version: &str) -> Option<String> { let parts = version.splitn(2, "-beta.").collect::<Vec<_>>(); - let count = parts.get(1).and_then(|s| s.find(' ').map(|p| (&s[..p]).to_string())); + let count = parts.get(1).and_then(|s| s.find(' ').map(|p| s[..p].to_string())); count } @@ -559,11 +559,10 @@ pub fn check_cfg_arg(name: &str, values: Option<&[&str]>) -> String { // ',values("tvos","watchos")' or '' (nothing) when there are no values. let next = match values { Some(values) => { - let mut tmp = - values.iter().map(|val| [",", "\"", val, "\""]).flatten().collect::<String>(); + let mut tmp = values.iter().flat_map(|val| [",", "\"", val, "\""]).collect::<String>(); tmp.insert_str(1, "values("); - tmp.push_str(")"); + tmp.push(')'); tmp } None => "".to_string(), diff --git a/src/bootstrap/src/utils/render_tests.rs b/src/bootstrap/src/utils/render_tests.rs index bff47f65c51..bfbb53f8c81 100644 --- a/src/bootstrap/src/utils/render_tests.rs +++ b/src/bootstrap/src/utils/render_tests.rs @@ -15,10 +15,10 @@ use termcolor::{Color, ColorSpec, WriteColor}; const TERSE_TESTS_PER_LINE: usize = 88; pub(crate) fn add_flags_and_try_run_tests(builder: &Builder<'_>, cmd: &mut Command) -> bool { - if cmd.get_args().position(|arg| arg == "--").is_none() { + if !cmd.get_args().any(|arg| arg == "--") { cmd.arg("--"); } - cmd.args(&["-Z", "unstable-options", "--format", "json"]); + cmd.args(["-Z", "unstable-options", "--format", "json"]); try_run_tests(builder, cmd, false) } @@ -303,19 +303,19 @@ impl Outcome<'_> { fn write_short(&self, writer: &mut dyn WriteColor) -> Result<(), std::io::Error> { match self { Outcome::Ok => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Green)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Green)))?; write!(writer, ".")?; } Outcome::BenchOk => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Cyan)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Cyan)))?; write!(writer, "b")?; } Outcome::Failed => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Red)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Red)))?; write!(writer, "F")?; } Outcome::Ignored { .. } => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Yellow)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Yellow)))?; write!(writer, "i")?; } } @@ -325,19 +325,19 @@ impl Outcome<'_> { fn write_long(&self, writer: &mut dyn WriteColor) -> Result<(), std::io::Error> { match self { Outcome::Ok => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Green)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Green)))?; write!(writer, "ok")?; } Outcome::BenchOk => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Cyan)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Cyan)))?; write!(writer, "benchmarked")?; } Outcome::Failed => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Red)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Red)))?; write!(writer, "FAILED")?; } Outcome::Ignored { reason } => { - writer.set_color(&ColorSpec::new().set_fg(Some(Color::Yellow)))?; + writer.set_color(ColorSpec::new().set_fg(Some(Color::Yellow)))?; write!(writer, "ignored")?; if let Some(reason) = reason { write!(writer, ", {reason}")?; diff --git a/src/bootstrap/src/utils/tarball.rs b/src/bootstrap/src/utils/tarball.rs index a8393f88f8a..573d923ed8f 100644 --- a/src/bootstrap/src/utils/tarball.rs +++ b/src/bootstrap/src/utils/tarball.rs @@ -226,8 +226,7 @@ impl<'a> Tarball<'a> { if self.include_target_in_component_name { component_name.push('-'); component_name.push_str( - &self - .target + self.target .as_ref() .expect("include_target_in_component_name used in a targetless tarball"), ); @@ -326,7 +325,7 @@ impl<'a> Tarball<'a> { assert!(!formats.is_empty(), "dist.compression-formats can't be empty"); cmd.arg("--compression-formats").arg(formats.join(",")); } - cmd.args(&["--compression-profile", &self.builder.config.dist_compression_profile]); + cmd.args(["--compression-profile", &self.builder.config.dist_compression_profile]); self.builder.run(&mut cmd); // Ensure there are no symbolic links in the tarball. In particular, @@ -347,7 +346,7 @@ impl<'a> Tarball<'a> { .config .dist_compression_formats .as_ref() - .and_then(|formats| formats.get(0)) + .and_then(|formats| formats.first()) .map(|s| s.as_str()) .unwrap_or("gz"); diff --git a/src/doc/unstable-book/src/compiler-flags/sanitizer.md b/src/doc/unstable-book/src/compiler-flags/sanitizer.md index 502853f39ae..523617eb3e1 100644 --- a/src/doc/unstable-book/src/compiler-flags/sanitizer.md +++ b/src/doc/unstable-book/src/compiler-flags/sanitizer.md @@ -1,5 +1,14 @@ # `sanitizer` +Sanitizers are tools that help detect and prevent various types of bugs and +vulnerabilities in software. They are available in compilers and work by +instrumenting the code to add additional runtime checks. While they provide +powerful tools for identifying bugs or security issues, it's important to note +that using sanitizers can introduce runtime overhead and might not catch all +possible issues. Therefore, they are typically used alongside other best +practices in software development, such as testing and fuzzing, to ensure the +highest level of software quality and security. + The tracking issues for this feature are: * [#39699](https://github.com/rust-lang/rust/issues/39699). @@ -9,21 +18,26 @@ The tracking issues for this feature are: This feature allows for use of one of following sanitizers: -* [AddressSanitizer](#addresssanitizer) a fast memory error detector. -* [ControlFlowIntegrity](#controlflowintegrity) LLVM Control Flow Integrity (CFI) provides - forward-edge control flow protection. -* [HWAddressSanitizer](#hwaddresssanitizer) a memory error detector similar to - AddressSanitizer, but based on partial hardware assistance. -* [KernelControlFlowIntegrity](#kernelcontrolflowintegrity) LLVM Kernel Control - Flow Integrity (KCFI) provides forward-edge control flow protection for - operating systems kernels. -* [LeakSanitizer](#leaksanitizer) a run-time memory leak detector. -* [MemorySanitizer](#memorysanitizer) a detector of uninitialized reads. -* [MemTagSanitizer](#memtagsanitizer) fast memory error detector based on - Armv8.5-A Memory Tagging Extension. -* [SafeStack](#safestack) provides backward-edge control flow protection by separating the stack into safe and unsafe regions. -* [ShadowCallStack](#shadowcallstack) provides backward-edge control flow protection (aarch64 only). -* [ThreadSanitizer](#threadsanitizer) a fast data race detector. +* Those intended for testing or fuzzing (but not production use): + * [AddressSanitizer](#addresssanitizer) a fast memory error detector. + * [HWAddressSanitizer](#hwaddresssanitizer) a memory error detector similar to + AddressSanitizer, but based on partial hardware assistance. + * [LeakSanitizer](#leaksanitizer) a run-time memory leak detector. + * [MemorySanitizer](#memorysanitizer) a detector of uninitialized reads. + * [ThreadSanitizer](#threadsanitizer) a fast data race detector. + +* Those that apart from testing, may be used in production: + * [ControlFlowIntegrity](#controlflowintegrity) LLVM Control Flow Integrity + (CFI) provides forward-edge control flow protection. + * [KernelControlFlowIntegrity](#kernelcontrolflowintegrity) LLVM Kernel + Control Flow Integrity (KCFI) provides forward-edge control flow protection + for operating systems kernels. + * [MemTagSanitizer](#memtagsanitizer) fast memory error detector based on + Armv8.5-A Memory Tagging Extension. + * [SafeStack](#safestack) provides backward-edge control flow protection by + separating the stack into safe and unsafe regions. + * [ShadowCallStack](#shadowcallstack) provides backward-edge control flow + protection (aarch64 only). To enable a sanitizer compile with `-Zsanitizer=address`,`-Zsanitizer=cfi`, `-Zsanitizer=hwaddress`, `-Zsanitizer=leak`, `-Zsanitizer=memory`, diff --git a/src/librustdoc/clean/auto_trait.rs b/src/librustdoc/clean/auto_trait.rs index 8cc4201c3fc..fbc2c3c5af4 100644 --- a/src/librustdoc/clean/auto_trait.rs +++ b/src/librustdoc/clean/auto_trait.rs @@ -318,15 +318,14 @@ where fn extract_for_generics(&self, pred: ty::Clause<'tcx>) -> FxHashSet<GenericParamDef> { let bound_predicate = pred.kind(); let tcx = self.cx.tcx; - let regions = match bound_predicate.skip_binder() { - ty::ClauseKind::Trait(poly_trait_pred) => { - tcx.collect_referenced_late_bound_regions(&bound_predicate.rebind(poly_trait_pred)) - } - ty::ClauseKind::Projection(poly_proj_pred) => { - tcx.collect_referenced_late_bound_regions(&bound_predicate.rebind(poly_proj_pred)) - } - _ => return FxHashSet::default(), - }; + let regions = + match bound_predicate.skip_binder() { + ty::ClauseKind::Trait(poly_trait_pred) => tcx + .collect_referenced_late_bound_regions(bound_predicate.rebind(poly_trait_pred)), + ty::ClauseKind::Projection(poly_proj_pred) => tcx + .collect_referenced_late_bound_regions(bound_predicate.rebind(poly_proj_pred)), + _ => return FxHashSet::default(), + }; regions .into_iter() diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index efad5a8d808..c662f054d05 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -3,7 +3,7 @@ use rustc_data_structures::sync::Lrc; use rustc_data_structures::unord::UnordSet; use rustc_errors::emitter::{DynEmitter, HumanEmitter}; use rustc_errors::json::JsonEmitter; -use rustc_errors::{codes::*, TerminalUrl}; +use rustc_errors::{codes::*, ErrorGuaranteed, TerminalUrl}; use rustc_feature::UnstableFeatures; use rustc_hir::def::Res; use rustc_hir::def_id::{DefId, DefIdMap, DefIdSet, LocalDefId}; @@ -306,7 +306,7 @@ pub(crate) fn run_global_ctxt( show_coverage: bool, render_options: RenderOptions, output_format: OutputFormat, -) -> (clean::Crate, RenderOptions, Cache) { +) -> Result<(clean::Crate, RenderOptions, Cache), ErrorGuaranteed> { // Certain queries assume that some checks were run elsewhere // (see https://github.com/rust-lang/rust/pull/73566#issuecomment-656954425), // so type-check everything other than function bodies in this crate before running lints. @@ -331,7 +331,10 @@ pub(crate) fn run_global_ctxt( }); }); - tcx.dcx().abort_if_errors(); + if let Some(guar) = tcx.dcx().has_errors() { + return Err(guar); + } + tcx.sess.time("missing_docs", || rustc_lint::check_crate(tcx)); tcx.sess.time("check_mod_attrs", || { tcx.hir().for_each_module(|module| tcx.ensure().check_mod_attrs(module)) @@ -452,14 +455,13 @@ pub(crate) fn run_global_ctxt( tcx.sess.time("check_lint_expectations", || tcx.check_expectations(Some(sym::rustdoc))); - // We must include lint errors here. - if tcx.dcx().has_errors_or_lint_errors().is_some() { - rustc_errors::FatalError.raise(); + if let Some(guar) = tcx.dcx().has_errors() { + return Err(guar); } krate = tcx.sess.time("create_format_cache", || Cache::populate(&mut ctxt, krate)); - (krate, ctxt.render_options, ctxt.cache) + Ok((krate, ctxt.render_options, ctxt.cache)) } /// Due to <https://github.com/rust-lang/rust/pull/73566>, diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index f9d4d1af114..09a90b62d97 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -153,8 +153,7 @@ pub(crate) fn run(options: RustdocOptions) -> Result<(), ErrorGuaranteed> { collector }); - // We must include lint errors here. - if compiler.sess.dcx().has_errors_or_lint_errors().is_some() { + if compiler.sess.dcx().has_errors().is_some() { FatalError.raise(); } diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 18ea49c5baf..33837fe5652 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -78,8 +78,7 @@ use std::io::{self, IsTerminal}; use std::process; use std::sync::{atomic::AtomicBool, Arc}; -use rustc_driver::abort_on_err; -use rustc_errors::ErrorGuaranteed; +use rustc_errors::{ErrorGuaranteed, FatalError}; use rustc_interface::interface; use rustc_middle::ty::TyCtxt; use rustc_session::config::{make_crate_type_option, ErrorOutputType, RustcOptGroup}; @@ -779,7 +778,7 @@ fn main_args( } compiler.enter(|queries| { - let mut gcx = abort_on_err(queries.global_ctxt(), sess); + let Ok(mut gcx) = queries.global_ctxt() else { FatalError.raise() }; if sess.dcx().has_errors().is_some() { sess.dcx().fatal("Compilation failed, aborting rustdoc"); } @@ -787,7 +786,7 @@ fn main_args( gcx.enter(|tcx| { let (krate, render_opts, mut cache) = sess.time("run_global_ctxt", || { core::run_global_ctxt(tcx, show_coverage, render_options, output_format) - }); + })?; info!("finished with rustc"); if let Some(options) = scrape_examples_options { diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs index fe02611b5d4..a172580ac3f 100644 --- a/src/librustdoc/passes/collect_intra_doc_links.rs +++ b/src/librustdoc/passes/collect_intra_doc_links.rs @@ -8,7 +8,7 @@ use rustc_data_structures::{ fx::{FxHashMap, FxHashSet}, intern::Interned, }; -use rustc_errors::{Applicability, Diagnostic, DiagnosticMessage}; +use rustc_errors::{Applicability, DiagnosticBuilder, DiagnosticMessage}; use rustc_hir::def::Namespace::*; use rustc_hir::def::{DefKind, Namespace, PerNS}; use rustc_hir::def_id::{DefId, CRATE_DEF_ID}; @@ -1173,21 +1173,22 @@ impl LinkCollector<'_, '_> { ) { // The resolved item did not match the disambiguator; give a better error than 'not found' let msg = format!("incompatible link kind for `{path_str}`"); - let callback = |diag: &mut Diagnostic, sp: Option<rustc_span::Span>, link_range| { - let note = format!( - "this link resolved to {} {}, which is not {} {}", - resolved.article(), - resolved.descr(), - specified.article(), - specified.descr(), - ); - if let Some(sp) = sp { - diag.span_label(sp, note); - } else { - diag.note(note); - } - suggest_disambiguator(resolved, diag, path_str, link_range, sp, diag_info); - }; + let callback = + |diag: &mut DiagnosticBuilder<'_, ()>, sp: Option<rustc_span::Span>, link_range| { + let note = format!( + "this link resolved to {} {}, which is not {} {}", + resolved.article(), + resolved.descr(), + specified.article(), + specified.descr(), + ); + if let Some(sp) = sp { + diag.span_label(sp, note); + } else { + diag.note(note); + } + suggest_disambiguator(resolved, diag, path_str, link_range, sp, diag_info); + }; report_diagnostic(self.cx.tcx, BROKEN_INTRA_DOC_LINKS, msg, diag_info, callback); } @@ -1676,7 +1677,7 @@ fn report_diagnostic( lint: &'static Lint, msg: impl Into<DiagnosticMessage> + Display, DiagnosticInfo { item, ori_link: _, dox, link_range }: &DiagnosticInfo<'_>, - decorate: impl FnOnce(&mut Diagnostic, Option<rustc_span::Span>, MarkdownLinkRange), + decorate: impl FnOnce(&mut DiagnosticBuilder<'_, ()>, Option<rustc_span::Span>, MarkdownLinkRange), ) { let Some(hir_id) = DocContext::as_local_hir_id(tcx, item.item_id) else { // If non-local, no need to check anything. @@ -2124,7 +2125,7 @@ fn ambiguity_error( /// disambiguator. fn suggest_disambiguator( res: Res, - diag: &mut Diagnostic, + diag: &mut DiagnosticBuilder<'_, ()>, path_str: &str, link_range: MarkdownLinkRange, sp: Option<rustc_span::Span>, diff --git a/src/tools/cargo b/src/tools/cargo -Subproject 7b7af3077bff8d60b7f124189bc9de227d3063a +Subproject 194a60b2952bd5d12ba15dd2577a97eed7d3c58 diff --git a/src/tools/clippy/clippy_lints/src/casts/cast_possible_truncation.rs b/src/tools/clippy/clippy_lints/src/casts/cast_possible_truncation.rs index f99a51e2b88..1543ae80399 100644 --- a/src/tools/clippy/clippy_lints/src/casts/cast_possible_truncation.rs +++ b/src/tools/clippy/clippy_lints/src/casts/cast_possible_truncation.rs @@ -4,7 +4,7 @@ use clippy_utils::expr_or_init; use clippy_utils::source::snippet; use clippy_utils::sugg::Sugg; use clippy_utils::ty::{get_discriminant_value, is_isize_or_usize}; -use rustc_errors::{Applicability, Diagnostic, SuggestionStyle}; +use rustc_errors::{Applicability, DiagnosticBuilder, SuggestionStyle}; use rustc_hir::def::{DefKind, Res}; use rustc_hir::{BinOpKind, Expr, ExprKind}; use rustc_lint::LateContext; @@ -177,7 +177,7 @@ fn offer_suggestion( expr: &Expr<'_>, cast_expr: &Expr<'_>, cast_to_span: Span, - diag: &mut Diagnostic, + diag: &mut DiagnosticBuilder<'_, ()>, ) { let cast_to_snip = snippet(cx, cast_to_span, ".."); let suggestion = if cast_to_snip == "_" { diff --git a/src/tools/clippy/clippy_lints/src/functions/result.rs b/src/tools/clippy/clippy_lints/src/functions/result.rs index f1200c2edc1..9505741e68f 100644 --- a/src/tools/clippy/clippy_lints/src/functions/result.rs +++ b/src/tools/clippy/clippy_lints/src/functions/result.rs @@ -1,4 +1,4 @@ -use rustc_errors::Diagnostic; +use rustc_errors::DiagnosticBuilder; use rustc_hir as hir; use rustc_lint::{LateContext, LintContext}; use rustc_middle::lint::in_external_macro; @@ -135,7 +135,7 @@ fn check_result_large_err<'tcx>(cx: &LateContext<'tcx>, err_ty: Ty<'tcx>, hir_ty RESULT_LARGE_ERR, hir_ty_span, "the `Err`-variant returned from this function is very large", - |diag: &mut Diagnostic| { + |diag: &mut DiagnosticBuilder<'_, ()>| { diag.span_label(hir_ty_span, format!("the `Err`-variant is at least {ty_size} bytes")); diag.help(format!("try reducing the size of `{err_ty}`, for example by boxing large elements or replacing it with `Box<{err_ty}>`")); }, diff --git a/src/tools/clippy/clippy_lints/src/if_let_mutex.rs b/src/tools/clippy/clippy_lints/src/if_let_mutex.rs index 5e354209cbf..61a322ea881 100644 --- a/src/tools/clippy/clippy_lints/src/if_let_mutex.rs +++ b/src/tools/clippy/clippy_lints/src/if_let_mutex.rs @@ -1,7 +1,7 @@ use clippy_utils::diagnostics::span_lint_and_then; use clippy_utils::ty::is_type_diagnostic_item; use clippy_utils::{higher, SpanlessEq}; -use rustc_errors::Diagnostic; +use rustc_errors::DiagnosticBuilder; use rustc_hir::intravisit::{self as visit, Visitor}; use rustc_hir::{Expr, ExprKind}; use rustc_lint::{LateContext, LateLintPass}; @@ -59,7 +59,7 @@ impl<'tcx> LateLintPass<'tcx> for IfLetMutex { arm_visit.visit_expr(if_else); if let Some(arm_mutex) = arm_visit.found_mutex_if_same_as(op_mutex) { - let diag = |diag: &mut Diagnostic| { + let diag = |diag: &mut DiagnosticBuilder<'_, ()>| { diag.span_label( op_mutex.span, "this Mutex will remain locked for the entire `if let`-block...", diff --git a/src/tools/clippy/clippy_lints/src/implicit_hasher.rs b/src/tools/clippy/clippy_lints/src/implicit_hasher.rs index 87f6f5e7959..746de50c0fa 100644 --- a/src/tools/clippy/clippy_lints/src/implicit_hasher.rs +++ b/src/tools/clippy/clippy_lints/src/implicit_hasher.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use std::collections::BTreeMap; -use rustc_errors::Diagnostic; +use rustc_errors::DiagnosticBuilder; use rustc_hir as hir; use rustc_hir::intravisit::{walk_body, walk_expr, walk_inf, walk_ty, Visitor}; use rustc_hir::{Body, Expr, ExprKind, GenericArg, Item, ItemKind, QPath, TyKind}; @@ -65,7 +65,7 @@ impl<'tcx> LateLintPass<'tcx> for ImplicitHasher { fn suggestion( cx: &LateContext<'_>, - diag: &mut Diagnostic, + diag: &mut DiagnosticBuilder<'_, ()>, generics_span: Span, generics_suggestion_span: Span, target: &ImplicitHasherType<'_>, diff --git a/src/tools/clippy/clippy_lints/src/manual_clamp.rs b/src/tools/clippy/clippy_lints/src/manual_clamp.rs index 0da309f9531..12bb80dfde2 100644 --- a/src/tools/clippy/clippy_lints/src/manual_clamp.rs +++ b/src/tools/clippy/clippy_lints/src/manual_clamp.rs @@ -9,7 +9,7 @@ use clippy_utils::{ peel_blocks_with_stmt, MaybePath, }; use itertools::Itertools; -use rustc_errors::{Applicability, Diagnostic}; +use rustc_errors::{Applicability, DiagnosticBuilder}; use rustc_hir::def::Res; use rustc_hir::{Arm, BinOpKind, Block, Expr, ExprKind, HirId, PatKind, PathSegment, PrimTy, QPath, StmtKind}; use rustc_lint::{LateContext, LateLintPass}; @@ -163,7 +163,7 @@ fn emit_suggestion<'tcx>(cx: &LateContext<'tcx>, suggestion: &ClampSuggestion<'t }; let suggestion = format!("{assignment}{input}.clamp({min}, {max}){semicolon}"); let msg = "clamp-like pattern without using clamp function"; - let lint_builder = |d: &mut Diagnostic| { + let lint_builder = |d: &mut DiagnosticBuilder<'_, ()>| { d.span_suggestion(*span, "replace with clamp", suggestion, Applicability::MaybeIncorrect); if *is_float { d.note("clamp will panic if max < min, min.is_nan(), or max.is_nan()") diff --git a/src/tools/clippy/clippy_lints/src/matches/significant_drop_in_scrutinee.rs b/src/tools/clippy/clippy_lints/src/matches/significant_drop_in_scrutinee.rs index ee0fdb35313..a7e42fd2405 100644 --- a/src/tools/clippy/clippy_lints/src/matches/significant_drop_in_scrutinee.rs +++ b/src/tools/clippy/clippy_lints/src/matches/significant_drop_in_scrutinee.rs @@ -2,7 +2,7 @@ use crate::FxHashSet; use clippy_utils::diagnostics::span_lint_and_then; use clippy_utils::source::{indent_of, snippet}; use clippy_utils::{get_attr, is_lint_allowed}; -use rustc_errors::{Applicability, Diagnostic}; +use rustc_errors::{Applicability, DiagnosticBuilder}; use rustc_hir::intravisit::{walk_expr, Visitor}; use rustc_hir::{Arm, Expr, ExprKind, MatchSource}; use rustc_lint::{LateContext, LintContext}; @@ -37,7 +37,7 @@ pub(super) fn check<'tcx>( } } -fn set_diagnostic<'tcx>(diag: &mut Diagnostic, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>, found: FoundSigDrop) { +fn set_diagnostic<'tcx>(diag: &mut DiagnosticBuilder<'_, ()>, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>, found: FoundSigDrop) { if found.lint_suggestion == LintSuggestion::MoveAndClone { // If our suggestion is to move and clone, then we want to leave it to the user to // decide how to address this lint, since it may be that cloning is inappropriate. diff --git a/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs b/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs index b2c5987e43d..617d6d998fc 100644 --- a/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs +++ b/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs @@ -1,6 +1,6 @@ use clippy_utils::diagnostics::span_lint_and_then; use clippy_utils::ty::is_type_diagnostic_item; -use rustc_errors::{Applicability, Diagnostic}; +use rustc_errors::{Applicability, DiagnosticBuilder}; use rustc_lint::LateContext; use rustc_span::{sym, Span}; use {rustc_ast as ast, rustc_hir as hir}; @@ -22,7 +22,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, recv: &'tcx hir::Expr<'_>, arg SUSPICIOUS_COMMAND_ARG_SPACE, arg.span, "single argument that looks like it should be multiple arguments", - |diag: &mut Diagnostic| { + |diag: &mut DiagnosticBuilder<'_, ()>| { diag.multipart_suggestion_verbose( "consider splitting the argument", vec![(span, "args".to_string()), (arg.span, format!("[{arg1:?}, {arg2:?}]"))], diff --git a/src/tools/clippy/clippy_lints/src/missing_asserts_for_indexing.rs b/src/tools/clippy/clippy_lints/src/missing_asserts_for_indexing.rs index 0e4d39c9990..ab25dde7efe 100644 --- a/src/tools/clippy/clippy_lints/src/missing_asserts_for_indexing.rs +++ b/src/tools/clippy/clippy_lints/src/missing_asserts_for_indexing.rs @@ -9,7 +9,7 @@ use clippy_utils::{eq_expr_value, hash_expr, higher}; use rustc_ast::{LitKind, RangeLimits}; use rustc_data_structures::packed::Pu128; use rustc_data_structures::unhash::UnhashMap; -use rustc_errors::{Applicability, Diagnostic}; +use rustc_errors::{Applicability, DiagnosticBuilder}; use rustc_hir::{BinOp, Block, Body, Expr, ExprKind, UnOp}; use rustc_lint::{LateContext, LateLintPass}; use rustc_session::declare_lint_pass; @@ -67,7 +67,7 @@ declare_lint_pass!(MissingAssertsForIndexing => [MISSING_ASSERTS_FOR_INDEXING]); fn report_lint<F>(cx: &LateContext<'_>, full_span: Span, msg: &str, indexes: &[Span], f: F) where - F: FnOnce(&mut Diagnostic), + F: FnOnce(&mut DiagnosticBuilder<'_, ()>), { span_lint_and_then(cx, MISSING_ASSERTS_FOR_INDEXING, full_span, msg, |diag| { f(diag); diff --git a/src/tools/clippy/clippy_lints/src/needless_pass_by_value.rs b/src/tools/clippy/clippy_lints/src/needless_pass_by_value.rs index 384a402ce5b..6252f91b25f 100644 --- a/src/tools/clippy/clippy_lints/src/needless_pass_by_value.rs +++ b/src/tools/clippy/clippy_lints/src/needless_pass_by_value.rs @@ -6,7 +6,7 @@ use clippy_utils::ty::{ implements_trait, implements_trait_with_env_from_iter, is_copy, is_type_diagnostic_item, is_type_lang_item, }; use rustc_ast::ast::Attribute; -use rustc_errors::{Applicability, Diagnostic}; +use rustc_errors::{Applicability, DiagnosticBuilder}; use rustc_hir::intravisit::FnKind; use rustc_hir::{ BindingAnnotation, Body, FnDecl, GenericArg, HirId, HirIdSet, Impl, ItemKind, LangItem, Mutability, Node, PatKind, @@ -196,7 +196,7 @@ impl<'tcx> LateLintPass<'tcx> for NeedlessPassByValue { && !moved_vars.contains(&canonical_id) { // Dereference suggestion - let sugg = |diag: &mut Diagnostic| { + let sugg = |diag: &mut DiagnosticBuilder<'_, ()>| { if let ty::Adt(def, ..) = ty.kind() { if let Some(span) = cx.tcx.hir().span_if_local(def.did()) { if type_allowed_to_implement_copy( diff --git a/src/tools/clippy/clippy_utils/src/diagnostics.rs b/src/tools/clippy/clippy_utils/src/diagnostics.rs index 5199959c0f2..db94b60dc95 100644 --- a/src/tools/clippy/clippy_utils/src/diagnostics.rs +++ b/src/tools/clippy/clippy_utils/src/diagnostics.rs @@ -8,13 +8,13 @@ //! Thank you! //! ~The `INTERNAL_METADATA_COLLECTOR` lint -use rustc_errors::{Applicability, Diagnostic, MultiSpan}; +use rustc_errors::{Applicability, DiagnosticBuilder, MultiSpan}; use rustc_hir::HirId; use rustc_lint::{LateContext, Lint, LintContext}; use rustc_span::Span; use std::env; -fn docs_link(diag: &mut Diagnostic, lint: &'static Lint) { +fn docs_link(diag: &mut DiagnosticBuilder<'_, ()>, lint: &'static Lint) { if env::var("CLIPPY_DISABLE_DOCS_LINKS").is_err() { if let Some(lint) = lint.name_lower().strip_prefix("clippy::") { diag.help(format!( @@ -143,7 +143,7 @@ pub fn span_lint_and_then<C, S, F>(cx: &C, lint: &'static Lint, sp: S, msg: &str where C: LintContext, S: Into<MultiSpan>, - F: FnOnce(&mut Diagnostic), + F: FnOnce(&mut DiagnosticBuilder<'_, ()>), { #[expect(clippy::disallowed_methods)] cx.span_lint(lint, sp, msg.to_string(), |diag| { @@ -165,7 +165,7 @@ pub fn span_lint_hir_and_then( hir_id: HirId, sp: impl Into<MultiSpan>, msg: &str, - f: impl FnOnce(&mut Diagnostic), + f: impl FnOnce(&mut DiagnosticBuilder<'_, ()>), ) { #[expect(clippy::disallowed_methods)] cx.tcx.node_span_lint(lint, hir_id, sp, msg.to_string(), |diag| { @@ -214,7 +214,7 @@ pub fn span_lint_and_sugg<T: LintContext>( /// appear once per /// replacement. In human-readable format though, it only appears once before /// the whole suggestion. -pub fn multispan_sugg<I>(diag: &mut Diagnostic, help_msg: &str, sugg: I) +pub fn multispan_sugg<I>(diag: &mut DiagnosticBuilder<'_, ()>, help_msg: &str, sugg: I) where I: IntoIterator<Item = (Span, String)>, { @@ -227,7 +227,7 @@ where /// multiple spans. This is tracked in issue [rustfix#141](https://github.com/rust-lang/rustfix/issues/141). /// Suggestions with multiple spans will be silently ignored. pub fn multispan_sugg_with_applicability<I>( - diag: &mut Diagnostic, + diag: &mut DiagnosticBuilder<'_, ()>, help_msg: &str, applicability: Applicability, sugg: I, diff --git a/src/tools/clippy/clippy_utils/src/sugg.rs b/src/tools/clippy/clippy_utils/src/sugg.rs index c86362c427c..b355e66b7b1 100644 --- a/src/tools/clippy/clippy_utils/src/sugg.rs +++ b/src/tools/clippy/clippy_utils/src/sugg.rs @@ -683,7 +683,7 @@ fn indentation<T: LintContext>(cx: &T, span: Span) -> Option<String> { }) } -/// Convenience extension trait for `Diagnostic`. +/// Convenience extension trait for `DiagnosticBuilder`. pub trait DiagnosticExt<T: LintContext> { /// Suggests to add an attribute to an item. /// @@ -731,7 +731,7 @@ pub trait DiagnosticExt<T: LintContext> { fn suggest_remove_item(&mut self, cx: &T, item: Span, msg: &str, applicability: Applicability); } -impl<T: LintContext> DiagnosticExt<T> for rustc_errors::Diagnostic { +impl<T: LintContext> DiagnosticExt<T> for rustc_errors::DiagnosticBuilder<'_, ()> { fn suggest_item_with_attr<D: Display + ?Sized>( &mut self, cx: &T, diff --git a/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.rs b/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.rs index 3edb3a10b76..4ae75544c60 100644 --- a/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.rs +++ b/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.rs @@ -13,8 +13,6 @@ const ARR: [i32; 2] = [1, 2]; const REF: &i32 = &ARR[idx()]; // Ok, should not produce stderr, since `suppress-restriction-lint-in-const` is set true. -const REF_ERR: &i32 = &ARR[idx4()]; // Ok, let rustc handle const contexts. -//~^ ERROR: failed const fn idx() -> usize { 1 @@ -35,9 +33,6 @@ fn main() { x[const { idx() }]; // Ok, should not produce stderr. x[const { idx4() }]; // Ok, let rustc's `unconditional_panic` lint handle `usize` indexing on arrays. const { &ARR[idx()] }; // Ok, should not produce stderr, since `suppress-restriction-lint-in-const` is set true. - const { &ARR[idx4()] }; // Ok, should not produce stderr, since `suppress-restriction-lint-in-const` is set true. - // - //~^^ ERROR: failed let y = &x; y[0]; // Ok, referencing shouldn't affect this lint. See the issue 6021 diff --git a/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.stderr b/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.stderr index 84e7eff4557..d5ce891b680 100644 --- a/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.stderr +++ b/src/tools/clippy/tests/ui-toml/suppress_lint_in_const/test.stderr @@ -1,17 +1,5 @@ -error[E0080]: evaluation of `main::{constant#3}` failed - --> $DIR/test.rs:38:14 - | -LL | const { &ARR[idx4()] }; // Ok, should not produce stderr, since `suppress-restriction-lint-in-const` is set true. - | ^^^^^^^^^^^ index out of bounds: the length is 2 but the index is 4 - -note: erroneous constant encountered - --> $DIR/test.rs:38:5 - | -LL | const { &ARR[idx4()] }; // Ok, should not produce stderr, since `suppress-restriction-lint-in-const` is set true. - | ^^^^^^^^^^^^^^^^^^^^^^ - error: indexing may panic - --> $DIR/test.rs:29:5 + --> $DIR/test.rs:27:5 | LL | x[index]; | ^^^^^^^^ @@ -21,7 +9,7 @@ LL | x[index]; = help: to override `-D warnings` add `#[allow(clippy::indexing_slicing)]` error: indexing may panic - --> $DIR/test.rs:47:5 + --> $DIR/test.rs:42:5 | LL | v[0]; | ^^^^ @@ -29,7 +17,7 @@ LL | v[0]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/test.rs:48:5 + --> $DIR/test.rs:43:5 | LL | v[10]; | ^^^^^ @@ -37,7 +25,7 @@ LL | v[10]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/test.rs:49:5 + --> $DIR/test.rs:44:5 | LL | v[1 << 3]; | ^^^^^^^^^ @@ -45,7 +33,7 @@ LL | v[1 << 3]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/test.rs:55:5 + --> $DIR/test.rs:50:5 | LL | v[N]; | ^^^^ @@ -53,19 +41,12 @@ LL | v[N]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/test.rs:56:5 + --> $DIR/test.rs:51:5 | LL | v[M]; | ^^^^ | = help: consider using `.get(n)` or `.get_mut(n)` instead -error[E0080]: evaluation of constant value failed - --> $DIR/test.rs:16:24 - | -LL | const REF_ERR: &i32 = &ARR[idx4()]; // Ok, let rustc handle const contexts. - | ^^^^^^^^^^^ index out of bounds: the length is 2 but the index is 4 - -error: aborting due to 8 previous errors +error: aborting due to 6 previous errors -For more information about this error, try `rustc --explain E0080`. diff --git a/src/tools/clippy/tests/ui/indexing_slicing_index.rs b/src/tools/clippy/tests/ui/indexing_slicing_index.rs index 1ac0bb11014..2ababad7fc7 100644 --- a/src/tools/clippy/tests/ui/indexing_slicing_index.rs +++ b/src/tools/clippy/tests/ui/indexing_slicing_index.rs @@ -13,8 +13,6 @@ const ARR: [i32; 2] = [1, 2]; const REF: &i32 = &ARR[idx()]; // This should be linted, since `suppress-restriction-lint-in-const` default is false. //~^ ERROR: indexing may panic -const REF_ERR: &i32 = &ARR[idx4()]; // Ok, let rustc handle const contexts. -//~^ ERROR: indexing may panic const fn idx() -> usize { 1 diff --git a/src/tools/clippy/tests/ui/indexing_slicing_index.stderr b/src/tools/clippy/tests/ui/indexing_slicing_index.stderr index 6d64fa1e6cf..2996e31a1aa 100644 --- a/src/tools/clippy/tests/ui/indexing_slicing_index.stderr +++ b/src/tools/clippy/tests/ui/indexing_slicing_index.stderr @@ -9,29 +9,20 @@ LL | const REF: &i32 = &ARR[idx()]; // This should be linted, since `suppress-re = note: `-D clippy::indexing-slicing` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(clippy::indexing_slicing)]` -error: indexing may panic - --> $DIR/indexing_slicing_index.rs:16:24 - | -LL | const REF_ERR: &i32 = &ARR[idx4()]; // Ok, let rustc handle const contexts. - | ^^^^^^^^^^^ - | - = help: consider using `.get(n)` or `.get_mut(n)` instead - = note: the suggestion might not be applicable in constant blocks - error[E0080]: evaluation of `main::{constant#3}` failed - --> $DIR/indexing_slicing_index.rs:48:14 + --> $DIR/indexing_slicing_index.rs:46:14 | LL | const { &ARR[idx4()] }; | ^^^^^^^^^^^ index out of bounds: the length is 2 but the index is 4 note: erroneous constant encountered - --> $DIR/indexing_slicing_index.rs:48:5 + --> $DIR/indexing_slicing_index.rs:46:5 | LL | const { &ARR[idx4()] }; | ^^^^^^^^^^^^^^^^^^^^^^ error: indexing may panic - --> $DIR/indexing_slicing_index.rs:29:5 + --> $DIR/indexing_slicing_index.rs:27:5 | LL | x[index]; | ^^^^^^^^ @@ -39,7 +30,7 @@ LL | x[index]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: index is out of bounds - --> $DIR/indexing_slicing_index.rs:32:5 + --> $DIR/indexing_slicing_index.rs:30:5 | LL | x[4]; | ^^^^ @@ -48,13 +39,13 @@ LL | x[4]; = help: to override `-D warnings` add `#[allow(clippy::out_of_bounds_indexing)]` error: index is out of bounds - --> $DIR/indexing_slicing_index.rs:34:5 + --> $DIR/indexing_slicing_index.rs:32:5 | LL | x[1 << 3]; | ^^^^^^^^^ error: indexing may panic - --> $DIR/indexing_slicing_index.rs:45:14 + --> $DIR/indexing_slicing_index.rs:43:14 | LL | const { &ARR[idx()] }; | ^^^^^^^^^^ @@ -63,7 +54,7 @@ LL | const { &ARR[idx()] }; = note: the suggestion might not be applicable in constant blocks error: indexing may panic - --> $DIR/indexing_slicing_index.rs:48:14 + --> $DIR/indexing_slicing_index.rs:46:14 | LL | const { &ARR[idx4()] }; | ^^^^^^^^^^^ @@ -72,13 +63,13 @@ LL | const { &ARR[idx4()] }; = note: the suggestion might not be applicable in constant blocks error: index is out of bounds - --> $DIR/indexing_slicing_index.rs:55:5 + --> $DIR/indexing_slicing_index.rs:53:5 | LL | y[4]; | ^^^^ error: indexing may panic - --> $DIR/indexing_slicing_index.rs:58:5 + --> $DIR/indexing_slicing_index.rs:56:5 | LL | v[0]; | ^^^^ @@ -86,7 +77,7 @@ LL | v[0]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/indexing_slicing_index.rs:60:5 + --> $DIR/indexing_slicing_index.rs:58:5 | LL | v[10]; | ^^^^^ @@ -94,7 +85,7 @@ LL | v[10]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/indexing_slicing_index.rs:62:5 + --> $DIR/indexing_slicing_index.rs:60:5 | LL | v[1 << 3]; | ^^^^^^^^^ @@ -102,13 +93,13 @@ LL | v[1 << 3]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: index is out of bounds - --> $DIR/indexing_slicing_index.rs:70:5 + --> $DIR/indexing_slicing_index.rs:68:5 | LL | x[N]; | ^^^^ error: indexing may panic - --> $DIR/indexing_slicing_index.rs:73:5 + --> $DIR/indexing_slicing_index.rs:71:5 | LL | v[N]; | ^^^^ @@ -116,7 +107,7 @@ LL | v[N]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: indexing may panic - --> $DIR/indexing_slicing_index.rs:75:5 + --> $DIR/indexing_slicing_index.rs:73:5 | LL | v[M]; | ^^^^ @@ -124,17 +115,11 @@ LL | v[M]; = help: consider using `.get(n)` or `.get_mut(n)` instead error: index is out of bounds - --> $DIR/indexing_slicing_index.rs:79:13 + --> $DIR/indexing_slicing_index.rs:77:13 | LL | let _ = x[4]; | ^^^^ -error[E0080]: evaluation of constant value failed - --> $DIR/indexing_slicing_index.rs:16:24 - | -LL | const REF_ERR: &i32 = &ARR[idx4()]; // Ok, let rustc handle const contexts. - | ^^^^^^^^^^^ index out of bounds: the length is 2 but the index is 4 - -error: aborting due to 17 previous errors +error: aborting due to 15 previous errors For more information about this error, try `rustc --explain E0080`. diff --git a/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.rs b/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.rs index c6855a09696..046ea70b08f 100644 --- a/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.rs +++ b/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.rs @@ -1,5 +1,4 @@ #![warn(clippy::non_send_fields_in_send_ty)] -#![allow(suspicious_auto_trait_impls)] #![feature(extern_types)] use std::cell::UnsafeCell; diff --git a/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.stderr b/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.stderr index 1ea76196af9..99fd4ea60b6 100644 --- a/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.stderr +++ b/src/tools/clippy/tests/ui/non_send_fields_in_send_ty.stderr @@ -1,11 +1,11 @@ error: some fields in `RingBuffer<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:17:1 + --> $DIR/non_send_fields_in_send_ty.rs:16:1 | LL | unsafe impl<T> Send for RingBuffer<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `data` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:12:5 + --> $DIR/non_send_fields_in_send_ty.rs:11:5 | LL | data: Vec<UnsafeCell<T>>, | ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -14,155 +14,155 @@ LL | data: Vec<UnsafeCell<T>>, = help: to override `-D warnings` add `#[allow(clippy::non_send_fields_in_send_ty)]` error: some fields in `MvccRwLock<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:26:1 + --> $DIR/non_send_fields_in_send_ty.rs:25:1 | LL | unsafe impl<T> Send for MvccRwLock<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `lock` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:23:5 + --> $DIR/non_send_fields_in_send_ty.rs:22:5 | LL | lock: Mutex<Box<T>>, | ^^^^^^^^^^^^^^^^^^^ = help: add bounds on type parameter `T` that satisfy `Mutex<Box<T>>: Send` error: some fields in `ArcGuard<RC, T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:35:1 + --> $DIR/non_send_fields_in_send_ty.rs:34:1 | LL | unsafe impl<RC, T: Send> Send for ArcGuard<RC, T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `head` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:32:5 + --> $DIR/non_send_fields_in_send_ty.rs:31:5 | LL | head: Arc<RC>, | ^^^^^^^^^^^^^ = help: add bounds on type parameter `RC` that satisfy `Arc<RC>: Send` error: some fields in `DeviceHandle<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:52:1 + --> $DIR/non_send_fields_in_send_ty.rs:51:1 | LL | unsafe impl<T: UsbContext> Send for DeviceHandle<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `context` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:48:5 + --> $DIR/non_send_fields_in_send_ty.rs:47:5 | LL | context: T, | ^^^^^^^^^^ = help: add `T: Send` bound in `Send` impl error: some fields in `NoGeneric` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:60:1 + --> $DIR/non_send_fields_in_send_ty.rs:59:1 | LL | unsafe impl Send for NoGeneric {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `rc_is_not_send` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:57:5 + --> $DIR/non_send_fields_in_send_ty.rs:56:5 | LL | rc_is_not_send: Rc<String>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: use a thread-safe type that implements `Send` error: some fields in `MultiField<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:69:1 + --> $DIR/non_send_fields_in_send_ty.rs:68:1 | LL | unsafe impl<T> Send for MultiField<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `field1` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:64:5 + --> $DIR/non_send_fields_in_send_ty.rs:63:5 | LL | field1: T, | ^^^^^^^^^ = help: add `T: Send` bound in `Send` impl note: it is not safe to send field `field2` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:65:5 + --> $DIR/non_send_fields_in_send_ty.rs:64:5 | LL | field2: T, | ^^^^^^^^^ = help: add `T: Send` bound in `Send` impl note: it is not safe to send field `field3` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:66:5 + --> $DIR/non_send_fields_in_send_ty.rs:65:5 | LL | field3: T, | ^^^^^^^^^ = help: add `T: Send` bound in `Send` impl error: some fields in `MyOption<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:77:1 + --> $DIR/non_send_fields_in_send_ty.rs:76:1 | LL | unsafe impl<T> Send for MyOption<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `0` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:73:12 + --> $DIR/non_send_fields_in_send_ty.rs:72:12 | LL | MySome(T), | ^ = help: add `T: Send` bound in `Send` impl error: some fields in `MultiParam<A, B>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:90:1 + --> $DIR/non_send_fields_in_send_ty.rs:89:1 | LL | unsafe impl<A, B> Send for MultiParam<A, B> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `vec` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:87:5 + --> $DIR/non_send_fields_in_send_ty.rs:86:5 | LL | vec: Vec<(A, B)>, | ^^^^^^^^^^^^^^^^ = help: add bounds on type parameters `A, B` that satisfy `Vec<(A, B)>: Send` error: some fields in `HeuristicTest` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:109:1 + --> $DIR/non_send_fields_in_send_ty.rs:108:1 | LL | unsafe impl Send for HeuristicTest {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `field4` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:104:5 + --> $DIR/non_send_fields_in_send_ty.rs:103:5 | LL | field4: (*const NonSend, Rc<u8>), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: use a thread-safe type that implements `Send` error: some fields in `AttrTest3<T>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:129:1 + --> $DIR/non_send_fields_in_send_ty.rs:128:1 | LL | unsafe impl<T> Send for AttrTest3<T> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `0` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:124:11 + --> $DIR/non_send_fields_in_send_ty.rs:123:11 | LL | Enum2(T), | ^ = help: add `T: Send` bound in `Send` impl error: some fields in `Complex<P, u32>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:138:1 + --> $DIR/non_send_fields_in_send_ty.rs:137:1 | LL | unsafe impl<P> Send for Complex<P, u32> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `field1` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:134:5 + --> $DIR/non_send_fields_in_send_ty.rs:133:5 | LL | field1: A, | ^^^^^^^^^ = help: add `P: Send` bound in `Send` impl error: some fields in `Complex<Q, MutexGuard<'static, bool>>` are not safe to be sent to another thread - --> $DIR/non_send_fields_in_send_ty.rs:142:1 + --> $DIR/non_send_fields_in_send_ty.rs:141:1 | LL | unsafe impl<Q: Send> Send for Complex<Q, MutexGuard<'static, bool>> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: it is not safe to send field `field2` to another thread - --> $DIR/non_send_fields_in_send_ty.rs:135:5 + --> $DIR/non_send_fields_in_send_ty.rs:134:5 | LL | field2: B, | ^^^^^^^^^ diff --git a/src/tools/compiletest/src/errors.rs b/src/tools/compiletest/src/errors.rs index e0ec76aa027..140c3aa0a64 100644 --- a/src/tools/compiletest/src/errors.rs +++ b/src/tools/compiletest/src/errors.rs @@ -72,9 +72,9 @@ enum WhichLine { /// and also //~^ ERROR message one for the preceding line, and /// //~| ERROR message two for that same line. /// -/// If cfg is not None (i.e., in an incremental test), then we look -/// for `//[X]~` instead, where `X` is the current `cfg`. -pub fn load_errors(testfile: &Path, cfg: Option<&str>) -> Vec<Error> { +/// If revision is not None, then we look +/// for `//[X]~` instead, where `X` is the current revision. +pub fn load_errors(testfile: &Path, revision: Option<&str>) -> Vec<Error> { let rdr = BufReader::new(File::open(testfile).unwrap()); // `last_nonfollow_error` tracks the most recently seen @@ -90,7 +90,7 @@ pub fn load_errors(testfile: &Path, cfg: Option<&str>) -> Vec<Error> { rdr.lines() .enumerate() .filter_map(|(line_num, line)| { - parse_expected(last_nonfollow_error, line_num + 1, &line.unwrap(), cfg).map( + parse_expected(last_nonfollow_error, line_num + 1, &line.unwrap(), revision).map( |(which, error)| { match which { FollowPrevious(_) => {} @@ -108,24 +108,27 @@ fn parse_expected( last_nonfollow_error: Option<usize>, line_num: usize, line: &str, - cfg: Option<&str>, + test_revision: Option<&str>, ) -> Option<(WhichLine, Error)> { // Matches comments like: // //~ // //~| // //~^ // //~^^^^^ - // //[cfg1]~ - // //[cfg1,cfg2]~^^ + // //[rev1]~ + // //[rev1,rev2]~^^ static RE: Lazy<Regex> = - Lazy::new(|| Regex::new(r"//(?:\[(?P<cfgs>[\w,]+)])?~(?P<adjust>\||\^*)").unwrap()); + Lazy::new(|| Regex::new(r"//(?:\[(?P<revs>[\w,]+)])?~(?P<adjust>\||\^*)").unwrap()); let captures = RE.captures(line)?; - match (cfg, captures.name("cfgs")) { - // Only error messages that contain our `cfg` between the square brackets apply to us. - (Some(cfg), Some(filter)) if !filter.as_str().split(',').any(|s| s == cfg) => return None, - (Some(_), Some(_)) => {} + match (test_revision, captures.name("revs")) { + // Only error messages that contain our revision between the square brackets apply to us. + (Some(test_revision), Some(revision_filters)) => { + if !revision_filters.as_str().split(',').any(|r| r == test_revision) { + return None; + } + } (None, Some(_)) => panic!("Only tests with revisions should use `//[X]~`"), diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index 117828645a9..44e5d8dea7d 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -55,7 +55,7 @@ impl EarlyProps { &mut poisoned, testfile, rdr, - &mut |_, _, ln, _| { + &mut |HeaderLine { directive: ln, .. }| { config.push_name_value_directive(ln, directives::AUX_BUILD, &mut props.aux, |r| { r.trim().to_string() }); @@ -289,20 +289,20 @@ impl TestProps { } } - pub fn from_aux_file(&self, testfile: &Path, cfg: Option<&str>, config: &Config) -> Self { + pub fn from_aux_file(&self, testfile: &Path, revision: Option<&str>, config: &Config) -> Self { let mut props = TestProps::new(); // copy over select properties to the aux build: props.incremental_dir = self.incremental_dir.clone(); props.ignore_pass = true; - props.load_from(testfile, cfg, config); + props.load_from(testfile, revision, config); props } - pub fn from_file(testfile: &Path, cfg: Option<&str>, config: &Config) -> Self { + pub fn from_file(testfile: &Path, revision: Option<&str>, config: &Config) -> Self { let mut props = TestProps::new(); - props.load_from(testfile, cfg, config); + props.load_from(testfile, revision, config); match (props.pass_mode, props.fail_mode) { (None, None) if config.mode == Mode::Ui => props.fail_mode = Some(FailMode::Check), @@ -315,9 +315,9 @@ impl TestProps { /// Loads properties from `testfile` into `props`. If a property is /// tied to a particular revision `foo` (indicated by writing - /// `//[foo]`), then the property is ignored unless `cfg` is + /// `//@[foo]`), then the property is ignored unless `test_revision` is /// `Some("foo")`. - fn load_from(&mut self, testfile: &Path, cfg: Option<&str>, config: &Config) { + fn load_from(&mut self, testfile: &Path, test_revision: Option<&str>, config: &Config) { let mut has_edition = false; if !testfile.is_dir() { let file = File::open(testfile).unwrap(); @@ -330,8 +330,8 @@ impl TestProps { &mut poisoned, testfile, file, - &mut |revision, _, ln, _| { - if revision.is_some() && revision != cfg { + &mut |HeaderLine { header_revision, directive: ln, .. }| { + if header_revision.is_some() && header_revision != test_revision { return; } @@ -455,7 +455,7 @@ impl TestProps { &mut self.check_test_line_numbers_match, ); - self.update_pass_mode(ln, cfg, config); + self.update_pass_mode(ln, test_revision, config); self.update_fail_mode(ln, config); config.set_name_directive(ln, IGNORE_PASS, &mut self.ignore_pass); @@ -645,44 +645,30 @@ impl TestProps { } } -/// Extract a `(Option<line_config>, directive)` directive from a line if comment is present. +/// Extract an `(Option<line_revision>, directive)` directive from a line if comment is present. +/// +/// See [`HeaderLine`] for a diagram. pub fn line_directive<'line>( comment: &str, - ln: &'line str, + original_line: &'line str, ) -> Option<(Option<&'line str>, &'line str)> { - let ln = ln.trim_start(); - if ln.starts_with(comment) { - let ln = ln[comment.len()..].trim_start(); - if ln.starts_with('[') { - // A comment like `//[foo]` is specific to revision `foo` - let Some(close_brace) = ln.find(']') else { - panic!( - "malformed condition directive: expected `{}[foo]`, found `{}`", - comment, ln - ); - }; + // Ignore lines that don't start with the comment prefix. + let after_comment = original_line.trim_start().strip_prefix(comment)?.trim_start(); + + if let Some(after_open_bracket) = after_comment.strip_prefix('[') { + // A comment like `//@[foo]` only applies to revision `foo`. + let Some((line_revision, directive)) = after_open_bracket.split_once(']') else { + panic!( + "malformed condition directive: expected `{comment}[foo]`, found `{original_line}`" + ) + }; - let lncfg = &ln[1..close_brace]; - Some((Some(lncfg), ln[(close_brace + 1)..].trim_start())) - } else { - Some((None, ln)) - } + Some((Some(line_revision), directive.trim_start())) } else { - None + Some((None, after_comment)) } } -fn iter_header<R: Read>( - mode: Mode, - suite: &str, - poisoned: &mut bool, - testfile: &Path, - rdr: R, - it: &mut dyn FnMut(Option<&str>, &str, &str, usize), -) { - iter_header_extra(mode, suite, poisoned, testfile, rdr, &[], it) -} - /// This is generated by collecting directives from ui tests and then extracting their directive /// names. This is **not** an exhaustive list of all possible directives. Instead, this is a /// best-effort approximation for diagnostics. @@ -801,23 +787,65 @@ const DIAGNOSTICS_DIRECTIVE_NAMES: &[&str] = &[ "unset-rustc-env", ]; -fn iter_header_extra( +/// The broken-down contents of a line containing a test header directive, +/// which [`iter_header`] passes to its callback function. +/// +/// For example: +/// +/// ```text +/// //@ compile-flags: -O +/// ^^^^^^^^^^^^^^^^^ directive +/// ^^^^^^^^^^^^^^^^^^^^^ original_line +/// +/// //@ [foo] compile-flags: -O +/// ^^^ header_revision +/// ^^^^^^^^^^^^^^^^^ directive +/// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ original_line +/// ``` +struct HeaderLine<'ln> { + line_number: usize, + /// Raw line from the test file, including comment prefix and any revision. + original_line: &'ln str, + /// Some header directives start with a revision name in square brackets + /// (e.g. `[foo]`), and only apply to that revision of the test. + /// If present, this field contains the revision name (e.g. `foo`). + header_revision: Option<&'ln str>, + /// The main part of the header directive, after removing the comment prefix + /// and the optional revision specifier. + directive: &'ln str, +} + +fn iter_header( mode: Mode, suite: &str, poisoned: &mut bool, testfile: &Path, rdr: impl Read, - extra_directives: &[&str], - it: &mut dyn FnMut(Option<&str>, &str, &str, usize), + it: &mut dyn FnMut(HeaderLine<'_>), ) { if testfile.is_dir() { return; } - // Process any extra directives supplied by the caller (e.g. because they - // are implied by the test mode), with a dummy line number of 0. - for directive in extra_directives { - it(None, directive, directive, 0); + // Coverage tests in coverage-run mode always have these extra directives, + // without needing to specify them manually in every test file. + // (Some of the comments below have been copied over from the old + // `tests/run-make/coverage-reports/Makefile`, which no longer exists.) + if mode == Mode::CoverageRun { + let extra_directives: &[&str] = &[ + "needs-profiler-support", + // FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works + // properly. Since we only have GCC on the CI ignore the test for now. + "ignore-windows-gnu", + // FIXME(pietroalbini): this test currently does not work on cross-compiled + // targets because remote-test is not capable of sending back the *.profraw + // files generated by the LLVM instrumentation. + "ignore-cross-compile", + ]; + // Process the extra implied directives, with a dummy line number of 0. + for directive in extra_directives { + it(HeaderLine { line_number: 0, original_line: "", header_revision: None, directive }); + } } let comment = if testfile.extension().is_some_and(|e| e == "rs") { @@ -843,14 +871,14 @@ fn iter_header_extra( // Assume that any directives will be found before the first // module or function. This doesn't seem to be an optimization // with a warm page cache. Maybe with a cold one. - let orig_ln = &ln; + let original_line = &ln; let ln = ln.trim(); if ln.starts_with("fn") || ln.starts_with("mod") { return; // First try to accept `ui_test` style comments - } else if let Some((lncfg, ln)) = line_directive(comment, ln) { - it(lncfg, orig_ln, ln, line_number); + } else if let Some((header_revision, directive)) = line_directive(comment, ln) { + it(HeaderLine { line_number, original_line, header_revision, directive }); } else if mode == Mode::Ui && suite == "ui" && !REVISION_MAGIC_COMMENT_RE.is_match(ln) { let Some((_, rest)) = line_directive("//", ln) else { continue; @@ -1143,44 +1171,23 @@ pub fn make_test_description<R: Read>( name: test::TestName, path: &Path, src: R, - cfg: Option<&str>, + test_revision: Option<&str>, poisoned: &mut bool, ) -> test::TestDesc { let mut ignore = false; let mut ignore_message = None; let mut should_fail = false; - let extra_directives: &[&str] = match config.mode { - // The coverage-run tests are treated as having these extra directives, - // without needing to specify them manually in every test file. - // (Some of the comments below have been copied over from - // `tests/run-make/coverage-reports/Makefile`, which no longer exists.) - Mode::CoverageRun => { - &[ - "needs-profiler-support", - // FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works - // properly. Since we only have GCC on the CI ignore the test for now. - "ignore-windows-gnu", - // FIXME(pietroalbini): this test currently does not work on cross-compiled - // targets because remote-test is not capable of sending back the *.profraw - // files generated by the LLVM instrumentation. - "ignore-cross-compile", - ] - } - _ => &[], - }; - let mut local_poisoned = false; - iter_header_extra( + iter_header( config.mode, &config.suite, &mut local_poisoned, path, src, - extra_directives, - &mut |revision, og_ln, ln, line_number| { - if revision.is_some() && revision != cfg { + &mut |HeaderLine { header_revision, original_line, directive: ln, line_number }| { + if header_revision.is_some() && header_revision != test_revision { return; } @@ -1204,7 +1211,7 @@ pub fn make_test_description<R: Read>( }; } - if let Some((_, post)) = og_ln.trim_start().split_once("//") { + if let Some((_, post)) = original_line.trim_start().split_once("//") { let post = post.trim_start(); if post.starts_with("ignore-tidy") && config.mode == Mode::Ui diff --git a/src/tools/compiletest/src/header/tests.rs b/src/tools/compiletest/src/header/tests.rs index 274006ae8c1..f76fb406cea 100644 --- a/src/tools/compiletest/src/header/tests.rs +++ b/src/tools/compiletest/src/header/tests.rs @@ -10,12 +10,19 @@ fn make_test_description<R: Read>( name: test::TestName, path: &Path, src: R, - cfg: Option<&str>, + revision: Option<&str>, ) -> test::TestDesc { let cache = HeadersCache::load(config); let mut poisoned = false; - let test = - crate::header::make_test_description(config, &cache, name, path, src, cfg, &mut poisoned); + let test = crate::header::make_test_description( + config, + &cache, + name, + path, + src, + revision, + &mut poisoned, + ); if poisoned { panic!("poisoned!"); } diff --git a/src/tools/compiletest/src/lib.rs b/src/tools/compiletest/src/lib.rs index 667358b1a6e..57a82eb37ed 100644 --- a/src/tools/compiletest/src/lib.rs +++ b/src/tools/compiletest/src/lib.rs @@ -745,7 +745,7 @@ fn make_test( let revisions = if early_props.revisions.is_empty() || config.mode == Mode::Incremental { vec![None] } else { - early_props.revisions.iter().map(Some).collect() + early_props.revisions.iter().map(|r| Some(r.as_str())).collect() }; revisions @@ -753,20 +753,13 @@ fn make_test( .map(|revision| { let src_file = std::fs::File::open(&test_path).expect("open test file to parse ignores"); - let cfg = revision.map(|v| &**v); let test_name = crate::make_test_name(&config, testpaths, revision); let mut desc = make_test_description( - &config, cache, test_name, &test_path, src_file, cfg, poisoned, + &config, cache, test_name, &test_path, src_file, revision, poisoned, ); // Ignore tests that already run and are up to date with respect to inputs. if !config.force_rerun { - desc.ignore |= is_up_to_date( - &config, - testpaths, - &early_props, - revision.map(|s| s.as_str()), - inputs, - ); + desc.ignore |= is_up_to_date(&config, testpaths, &early_props, revision, inputs); } test::TestDescAndFn { desc, @@ -879,7 +872,7 @@ impl Stamp { fn make_test_name( config: &Config, testpaths: &TestPaths, - revision: Option<&String>, + revision: Option<&str>, ) -> test::TestName { // Print the name of the file, relative to the repository root. // `src_base` looks like `/path/to/rust/tests/ui` @@ -907,11 +900,11 @@ fn make_test_name( fn make_test_closure( config: Arc<Config>, testpaths: &TestPaths, - revision: Option<&String>, + revision: Option<&str>, ) -> test::TestFn { let config = config.clone(); let testpaths = testpaths.clone(); - let revision = revision.cloned(); + let revision = revision.map(str::to_owned); test::DynTestFn(Box::new(move || { runtest::run(config, &testpaths, revision.as_deref()); Ok(()) diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index f3a0e87d43a..f3e2a940f36 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1936,7 +1936,7 @@ impl<'test> TestCx<'test> { fn document(&self, out_dir: &Path) -> ProcRes { if self.props.build_aux_docs { for rel_ab in &self.props.aux_builds { - let aux_testpaths = self.compute_aux_test_paths(rel_ab); + let aux_testpaths = self.compute_aux_test_paths(&self.testpaths, rel_ab); let aux_props = self.props.from_aux_file(&aux_testpaths.file, self.revision, self.config); let aux_cx = TestCx { @@ -2092,24 +2092,18 @@ impl<'test> TestCx<'test> { proc_res } - /// For each `aux-build: foo/bar` annotation, we check to find the - /// file in an `auxiliary` directory relative to the test itself. - fn compute_aux_test_paths(&self, rel_ab: &str) -> TestPaths { - let test_ab = self - .testpaths - .file - .parent() - .expect("test file path has no parent") - .join("auxiliary") - .join(rel_ab); + /// For each `aux-build: foo/bar` annotation, we check to find the file in an `auxiliary` + /// directory relative to the test itself (not any intermediate auxiliaries). + fn compute_aux_test_paths(&self, of: &TestPaths, rel_ab: &str) -> TestPaths { + let test_ab = + of.file.parent().expect("test file path has no parent").join("auxiliary").join(rel_ab); if !test_ab.exists() { self.fatal(&format!("aux-build `{}` source not found", test_ab.display())) } TestPaths { file: test_ab, - relative_dir: self - .testpaths + relative_dir: of .relative_dir .join(self.output_testname_unique()) .join("auxiliary") @@ -2135,7 +2129,7 @@ impl<'test> TestCx<'test> { self.config.target.contains("vxworks") && !self.is_vxworks_pure_static() } - fn build_all_auxiliary(&self, rustc: &mut Command) -> PathBuf { + fn aux_output_dir(&self) -> PathBuf { let aux_dir = self.aux_output_dir_name(); if !self.props.aux_builds.is_empty() { @@ -2143,22 +2137,26 @@ impl<'test> TestCx<'test> { create_dir_all(&aux_dir).unwrap(); } + aux_dir + } + + fn build_all_auxiliary(&self, of: &TestPaths, aux_dir: &Path, rustc: &mut Command) { for rel_ab in &self.props.aux_builds { - self.build_auxiliary(rel_ab, &aux_dir); + self.build_auxiliary(of, rel_ab, &aux_dir); } for (aux_name, aux_path) in &self.props.aux_crates { - let is_dylib = self.build_auxiliary(&aux_path, &aux_dir); + let is_dylib = self.build_auxiliary(of, &aux_path, &aux_dir); let lib_name = get_lib_name(&aux_path.trim_end_matches(".rs").replace('-', "_"), is_dylib); rustc.arg("--extern").arg(format!("{}={}/{}", aux_name, aux_dir.display(), lib_name)); } - - aux_dir } fn compose_and_run_compiler(&self, mut rustc: Command, input: Option<String>) -> ProcRes { - let aux_dir = self.build_all_auxiliary(&mut rustc); + let aux_dir = self.aux_output_dir(); + self.build_all_auxiliary(&self.testpaths, &aux_dir, &mut rustc); + self.props.unset_rustc_env.iter().fold(&mut rustc, Command::env_remove); rustc.envs(self.props.rustc_env.clone()); self.compose_and_run( @@ -2172,10 +2170,10 @@ impl<'test> TestCx<'test> { /// Builds an aux dependency. /// /// Returns whether or not it is a dylib. - fn build_auxiliary(&self, source_path: &str, aux_dir: &Path) -> bool { - let aux_testpaths = self.compute_aux_test_paths(source_path); + fn build_auxiliary(&self, of: &TestPaths, source_path: &str, aux_dir: &Path) -> bool { + let aux_testpaths = self.compute_aux_test_paths(of, source_path); let aux_props = self.props.from_aux_file(&aux_testpaths.file, self.revision, self.config); - let aux_output = TargetLocation::ThisDirectory(self.aux_output_dir_name()); + let aux_output = TargetLocation::ThisDirectory(aux_dir.to_path_buf()); let aux_cx = TestCx { config: self.config, props: &aux_props, @@ -2193,6 +2191,7 @@ impl<'test> TestCx<'test> { LinkToAux::No, Vec::new(), ); + aux_cx.build_all_auxiliary(of, aux_dir, &mut aux_rustc); for key in &aux_props.unset_rustc_env { aux_rustc.env_remove(key); @@ -3034,7 +3033,8 @@ impl<'test> TestCx<'test> { LinkToAux::Yes, Vec::new(), ); - new_rustdoc.build_all_auxiliary(&mut rustc); + let aux_dir = new_rustdoc.aux_output_dir(); + new_rustdoc.build_all_auxiliary(&new_rustdoc.testpaths, &aux_dir, &mut rustc); let proc_res = new_rustdoc.document(&compare_dir); if !proc_res.status.success() { @@ -3938,10 +3938,15 @@ impl<'test> TestCx<'test> { self.props.compare_output_lines_by_subset, ); } else if !expected_fixed.is_empty() { - panic!( - "the `// run-rustfix` directive wasn't found but a `*.fixed` \ - file was found" - ); + if self.config.suite == "ui" { + panic!( + "the `//@ run-rustfix` directive wasn't found but a `*.fixed` file was found" + ); + } else { + panic!( + "the `// run-rustfix` directive wasn't found but a `*.fixed` file was found" + ); + } } if errors > 0 { diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version index 715917e0f2f..02ab748c447 100644 --- a/src/tools/miri/rust-version +++ b/src/tools/miri/rust-version @@ -1 +1 @@ -d5735645753e990a72446094f703df9b5e421555 +c5f69bdd5173a948e0131f934fa7c4cbf5e0b55f diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs index db4c4a28deb..8a7133fea43 100644 --- a/src/tools/miri/src/bin/miri.rs +++ b/src/tools/miri/src/bin/miri.rs @@ -68,7 +68,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls { queries: &'tcx rustc_interface::Queries<'tcx>, ) -> Compilation { queries.global_ctxt().unwrap().enter(|tcx| { - if tcx.sess.compile_status().is_err() { + if tcx.sess.dcx().has_errors().is_some() { tcx.dcx().fatal("miri cannot be run on programs that fail compilation"); } diff --git a/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_box.rs b/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_box.rs index d2823672ade..fa40f942b8f 100644 --- a/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_box.rs +++ b/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_box.rs @@ -8,7 +8,7 @@ use std::ptr::{self, addr_of_mut}; // (This test relies on the `deref_copy` pass that lowers `**ptr` to materialize the intermediate pointer.) fn main() { - let mut inner = ptr::invalid::<i32>(24); + let mut inner = ptr::without_provenance::<i32>(24); let outer = addr_of_mut!(inner).cast::<Box<i32>>(); // Now `outer` is a pointer to a dangling reference. // Deref'ing that should be UB. diff --git a/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_ref.rs b/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_ref.rs index b62e041d70c..036ef2580a8 100644 --- a/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_ref.rs +++ b/src/tools/miri/tests/fail/dangling_pointers/deref_dangling_ref.rs @@ -8,7 +8,7 @@ use std::ptr::{self, addr_of_mut}; // (This test relies on the `deref_copy` pass that lowers `**ptr` to materialize the intermediate pointer.) fn main() { - let mut inner = ptr::invalid::<i32>(24); + let mut inner = ptr::without_provenance::<i32>(24); let outer = addr_of_mut!(inner).cast::<&'static mut i32>(); // Now `outer` is a pointer to a dangling reference. // Deref'ing that should be UB. diff --git a/src/tools/miri/tests/fail/provenance/ptr_invalid.rs b/src/tools/miri/tests/fail/provenance/ptr_invalid.rs index 5d44928d1d2..730859684a0 100644 --- a/src/tools/miri/tests/fail/provenance/ptr_invalid.rs +++ b/src/tools/miri/tests/fail/provenance/ptr_invalid.rs @@ -1,9 +1,9 @@ #![feature(strict_provenance, exposed_provenance)] -// Ensure that a `ptr::invalid` ptr is truly invalid. +// Ensure that a `ptr::without_provenance` ptr is truly invalid. fn main() { let x = 42; let xptr = &x as *const i32; - let xptr_invalid = std::ptr::invalid::<i32>(xptr.expose_addr()); + let xptr_invalid = std::ptr::without_provenance::<i32>(xptr.expose_addr()); let _val = unsafe { *xptr_invalid }; //~ ERROR: is a dangling pointer } diff --git a/src/tools/miri/tests/fail/provenance/ptr_invalid_offset.rs b/src/tools/miri/tests/fail/provenance/ptr_invalid_offset.rs index 91ba18f7680..c8be521ef82 100644 --- a/src/tools/miri/tests/fail/provenance/ptr_invalid_offset.rs +++ b/src/tools/miri/tests/fail/provenance/ptr_invalid_offset.rs @@ -4,7 +4,7 @@ fn main() { let x = 22; let ptr = &x as *const _ as *const u8; - let roundtrip = std::ptr::invalid::<u8>(ptr as usize); + let roundtrip = std::ptr::without_provenance::<u8>(ptr as usize); // Not even offsetting this is allowed. let _ = unsafe { roundtrip.offset(1) }; //~ERROR: is a dangling pointer } diff --git a/src/tools/miri/tests/pass-dep/shims/mmap.rs b/src/tools/miri/tests/pass-dep/shims/mmap.rs index 7bbb9dd53cb..5acdedc67bf 100644 --- a/src/tools/miri/tests/pass-dep/shims/mmap.rs +++ b/src/tools/miri/tests/pass-dep/shims/mmap.rs @@ -71,7 +71,7 @@ fn test_mmap<Offset: Default>( let ptr = unsafe { mmap( - ptr::invalid_mut(page_size * 64), + ptr::without_provenance_mut(page_size * 64), page_size, libc::PROT_READ | libc::PROT_WRITE, // We don't support MAP_FIXED @@ -114,13 +114,13 @@ fn test_mmap<Offset: Default>( assert_eq!(ptr, libc::MAP_FAILED); // We report an error when trying to munmap an address which is not a multiple of the page size - let res = unsafe { libc::munmap(ptr::invalid_mut(1), page_size) }; + let res = unsafe { libc::munmap(ptr::without_provenance_mut(1), page_size) }; assert_eq!(res, -1); assert_eq!(Error::last_os_error().raw_os_error().unwrap(), libc::EINVAL); // We report an error when trying to munmap a length that cannot be rounded up to a multiple of // the page size. - let res = unsafe { libc::munmap(ptr::invalid_mut(page_size), usize::MAX - 1) }; + let res = unsafe { libc::munmap(ptr::without_provenance_mut(page_size), usize::MAX - 1) }; assert_eq!(res, -1); assert_eq!(Error::last_os_error().raw_os_error().unwrap(), libc::EINVAL); } @@ -155,8 +155,9 @@ fn test_mremap() { // Test all of our error conditions // Not aligned - let ptr = - unsafe { libc::mremap(ptr::invalid_mut(1), page_size, page_size, libc::MREMAP_MAYMOVE) }; + let ptr = unsafe { + libc::mremap(ptr::without_provenance_mut(1), page_size, page_size, libc::MREMAP_MAYMOVE) + }; assert_eq!(ptr, libc::MAP_FAILED); assert_eq!(Error::last_os_error().raw_os_error().unwrap(), libc::EINVAL); diff --git a/src/tools/miri/tests/pass-dep/shims/posix_memalign.rs b/src/tools/miri/tests/pass-dep/shims/posix_memalign.rs index 9bd8a00d68d..5cf62995fbe 100644 --- a/src/tools/miri/tests/pass-dep/shims/posix_memalign.rs +++ b/src/tools/miri/tests/pass-dep/shims/posix_memalign.rs @@ -58,7 +58,7 @@ fn main() { // Non-power of 2 align unsafe { - let mut ptr: *mut libc::c_void = ptr::invalid_mut(0x1234567); + let mut ptr: *mut libc::c_void = ptr::without_provenance_mut(0x1234567); let align = 15; let size = 8; assert_eq!(libc::posix_memalign(&mut ptr, align, size), libc::EINVAL); @@ -70,7 +70,7 @@ fn main() { // Too small align (smaller than ptr) unsafe { - let mut ptr: *mut libc::c_void = ptr::invalid_mut(0x1234567); + let mut ptr: *mut libc::c_void = ptr::without_provenance_mut(0x1234567); let align = std::mem::size_of::<usize>() / 2; let size = 8; assert_eq!(libc::posix_memalign(&mut ptr, align, size), libc::EINVAL); diff --git a/src/tools/miri/tests/pass/align_offset_symbolic.rs b/src/tools/miri/tests/pass/align_offset_symbolic.rs index ac28c63e081..c32fa2c8f9b 100644 --- a/src/tools/miri/tests/pass/align_offset_symbolic.rs +++ b/src/tools/miri/tests/pass/align_offset_symbolic.rs @@ -100,7 +100,7 @@ fn huge_align() { #[cfg(target_pointer_width = "16")] const SIZE: usize = 1 << 13; struct HugeSize(#[allow(dead_code)] [u8; SIZE - 1]); - let _ = std::ptr::invalid::<HugeSize>(SIZE).align_offset(SIZE); + let _ = std::ptr::without_provenance::<HugeSize>(SIZE).align_offset(SIZE); } // This shows that we cannot store the promised alignment info in `AllocExtra`, diff --git a/src/tools/miri/tests/pass/atomic.rs b/src/tools/miri/tests/pass/atomic.rs index 60b8ff87b59..dfdc9b42f81 100644 --- a/src/tools/miri/tests/pass/atomic.rs +++ b/src/tools/miri/tests/pass/atomic.rs @@ -137,7 +137,7 @@ fn atomic_ptr() { let ptr = AtomicPtr::<i32>::new(ptr::null_mut()); assert!(ptr.load(Relaxed).addr() == 0); - ptr.store(ptr::invalid_mut(13), SeqCst); + ptr.store(ptr::without_provenance_mut(13), SeqCst); assert!(ptr.swap(x, Relaxed).addr() == 13); unsafe { assert!(*ptr.load(Acquire) == 0) }; @@ -145,7 +145,7 @@ fn atomic_ptr() { assert_eq!( ptr.compare_exchange( (&mut 0 as *mut i32).with_addr(x.addr()), - ptr::invalid_mut(0), + ptr::without_provenance_mut(0), SeqCst, SeqCst ) @@ -156,7 +156,7 @@ fn atomic_ptr() { assert_eq!( ptr.compare_exchange( (&mut 0 as *mut i32).with_addr(x.addr()), - ptr::invalid_mut(0), + ptr::without_provenance_mut(0), SeqCst, SeqCst ) diff --git a/src/tools/miri/tests/pass/ptr_raw.rs b/src/tools/miri/tests/pass/ptr_raw.rs index 11c3455a9ca..dcf13d97ce3 100644 --- a/src/tools/miri/tests/pass/ptr_raw.rs +++ b/src/tools/miri/tests/pass/ptr_raw.rs @@ -35,12 +35,12 @@ fn assign_overlapping() { fn deref_invalid() { unsafe { // `addr_of!(*ptr)` is never UB. - let _val = addr_of!(*ptr::invalid::<i32>(0)); - let _val = addr_of!(*ptr::invalid::<i32>(1)); // not aligned + let _val = addr_of!(*ptr::without_provenance::<i32>(0)); + let _val = addr_of!(*ptr::without_provenance::<i32>(1)); // not aligned // Similarly, just mentioning the place is fine. - let _ = *ptr::invalid::<i32>(0); - let _ = *ptr::invalid::<i32>(1); + let _ = *ptr::without_provenance::<i32>(0); + let _ = *ptr::without_provenance::<i32>(1); } } diff --git a/src/tools/miri/tests/pass/slices.rs b/src/tools/miri/tests/pass/slices.rs index a99e921150b..0b9805681b4 100644 --- a/src/tools/miri/tests/pass/slices.rs +++ b/src/tools/miri/tests/pass/slices.rs @@ -29,7 +29,8 @@ fn slice_of_zst() { // In a slice of zero-size elements the pointer is meaningless. // Ensure iteration still works even if the pointer is at the end of the address space. - let slice: &[()] = unsafe { slice::from_raw_parts(ptr::invalid(-5isize as usize), 10) }; + let slice: &[()] = + unsafe { slice::from_raw_parts(ptr::without_provenance(-5isize as usize), 10) }; assert_eq!(slice.len(), 10); assert_eq!(slice.iter().count(), 10); @@ -43,7 +44,7 @@ fn slice_of_zst() { // Test mutable iterators as well let slice: &mut [()] = - unsafe { slice::from_raw_parts_mut(ptr::invalid_mut(-5isize as usize), 10) }; + unsafe { slice::from_raw_parts_mut(ptr::without_provenance_mut(-5isize as usize), 10) }; assert_eq!(slice.len(), 10); assert_eq!(slice.iter_mut().count(), 10); @@ -263,7 +264,7 @@ fn test_for_invalidated_pointers() { fn large_raw_slice() { let size = isize::MAX as usize; // Creating a raw slice of size isize::MAX and asking for its size is okay. - let s = std::ptr::slice_from_raw_parts(ptr::invalid::<u8>(1), size); + let s = std::ptr::slice_from_raw_parts(ptr::without_provenance::<u8>(1), size); assert_eq!(size, unsafe { std::mem::size_of_val_raw(s) }); } diff --git a/src/tools/miri/tests/pass/underscore_pattern.rs b/src/tools/miri/tests/pass/underscore_pattern.rs index b0e85bc1bb0..f0afe558954 100644 --- a/src/tools/miri/tests/pass/underscore_pattern.rs +++ b/src/tools/miri/tests/pass/underscore_pattern.rs @@ -38,7 +38,7 @@ fn invalid_match() { fn dangling_let() { unsafe { - let ptr = ptr::invalid::<bool>(0x40); + let ptr = ptr::without_provenance::<bool>(0x40); let _ = *ptr; } } @@ -54,7 +54,7 @@ fn invalid_let() { // Adding a type annotation used to change how MIR is generated, make sure we cover both cases. fn dangling_let_type_annotation() { unsafe { - let ptr = ptr::invalid::<bool>(0x40); + let ptr = ptr::without_provenance::<bool>(0x40); let _: bool = *ptr; } } diff --git a/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs b/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs index 2fc07933200..3329909e9da 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs +++ b/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs @@ -503,10 +503,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[ description: r##"stable features found in `#[feature]` directive"##, }, Lint { - label: "suspicious_auto_trait_impls", - description: r##"the rules governing auto traits have recently changed resulting in potential breakage"##, - }, - Lint { label: "suspicious_double_ref_op", description: r##"suspicious call of trait method on `&&T`"##, }, @@ -778,7 +774,6 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[ "repr_transparent_external_private_fields", "semicolon_in_expressions_from_macros", "soft_unstable", - "suspicious_auto_trait_impls", "uninhabited_static", "unstable_name_collisions", "unstable_syntax_pre_expansion", diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs index b36b6da308e..cff219285dc 100644 --- a/src/tools/tidy/src/deps.rs +++ b/src/tools/tidy/src/deps.rs @@ -92,6 +92,7 @@ const EXCEPTIONS: ExceptionList = &[ ("ryu", "Apache-2.0 OR BSL-1.0"), // BSL is not acceptble, but we use it under Apache-2.0 // cargo/... (because of serde) ("self_cell", "Apache-2.0"), // rustc (fluent translations) ("snap", "BSD-3-Clause"), // rustc + ("wasmparser", "Apache-2.0 WITH LLVM-exception"), // rustc // tidy-alphabetical-end ]; @@ -379,6 +380,7 @@ const PERMITTED_RUSTC_DEPENDENCIES: &[&str] = &[ "valuable", "version_check", "wasi", + "wasmparser", "winapi", "winapi-i686-pc-windows-gnu", "winapi-util", @@ -564,6 +566,21 @@ fn check_runtime_license_exceptions( if pkg.name == "fortanix-sgx-abi" && pkg.license.as_deref() == Some("MPL-2.0") { continue; } + + // This exception is due to the fact that the feature set of the + // `object` crate is different between rustc and libstd. In the + // standard library only a conservative set of features are enabled + // which notably does not include the `wasm` feature which pulls in + // this dependency. In the compiler, however, the `wasm` feature is + // enabled. This exception is intended to be here so long as the + // `EXCEPTIONS` above contains `wasmparser`, but once that goes away + // this can be removed. + if pkg.name == "wasmparser" + && pkg.license.as_deref() == Some("Apache-2.0 WITH LLVM-exception") + { + continue; + } + tidy_error!(bad, "invalid license `{}` in `{}`", license, pkg.id); } } diff --git a/src/tools/tidy/src/issues.txt b/src/tools/tidy/src/issues.txt new file mode 100644 index 00000000000..81437473b2d --- /dev/null +++ b/src/tools/tidy/src/issues.txt @@ -0,0 +1,4387 @@ + +/* +============================================================ + ⚠️⚠️⚠️NOTHING SHOULD EVER BE ADDED TO THIS LIST⚠️⚠️⚠️ +============================================================ +*/ +[ +"ui/abi/issue-28676.rs", +"ui/abi/issues/issue-22565-rust-call.rs", +"ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs", +"ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs", +"ui/argument-suggestions/issue-100154.rs", +"ui/argument-suggestions/issue-100478.rs", +"ui/argument-suggestions/issue-101097.rs", +"ui/argument-suggestions/issue-109425.rs", +"ui/argument-suggestions/issue-109831.rs", +"ui/argument-suggestions/issue-112507.rs", +"ui/argument-suggestions/issue-96638.rs", +"ui/argument-suggestions/issue-97197.rs", +"ui/argument-suggestions/issue-97484.rs", +"ui/argument-suggestions/issue-98894.rs", +"ui/argument-suggestions/issue-98897.rs", +"ui/argument-suggestions/issue-99482.rs", +"ui/array-slice-vec/issue-15730.rs", +"ui/array-slice-vec/issue-18425.rs", +"ui/array-slice-vec/issue-69103-extra-binding-subslice.rs", +"ui/asm/issue-113788.rs", +"ui/asm/issue-72570.rs", +"ui/asm/issue-85247.rs", +"ui/asm/issue-87802.rs", +"ui/asm/issue-89305.rs", +"ui/asm/issue-92378.rs", +"ui/asm/issue-97490.rs", +"ui/asm/issue-99071.rs", +"ui/asm/issue-99122-2.rs", +"ui/asm/issue-99122.rs", +"ui/asm/x86_64/issue-82869.rs", +"ui/asm/x86_64/issue-89875.rs", +"ui/asm/x86_64/issue-96797.rs", +"ui/associated-consts/issue-102335-const.rs", +"ui/associated-consts/issue-105330.rs", +"ui/associated-consts/issue-110933.rs", +"ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs", +"ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs", +"ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs", +"ui/associated-consts/issue-47814.rs", +"ui/associated-consts/issue-58022.rs", +"ui/associated-consts/issue-63496.rs", +"ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs", +"ui/associated-consts/issue-88599-ref-self.rs", +"ui/associated-consts/issue-93775.rs", +"ui/associated-consts/issue-93835.rs", +"ui/associated-inherent-types/issue-104260.rs", +"ui/associated-inherent-types/issue-109071.rs", +"ui/associated-inherent-types/issue-109299-1.rs", +"ui/associated-inherent-types/issue-109299.rs", +"ui/associated-inherent-types/issue-109768.rs", +"ui/associated-inherent-types/issue-109789.rs", +"ui/associated-inherent-types/issue-109790.rs", +"ui/associated-inherent-types/issue-111404-0.rs", +"ui/associated-inherent-types/issue-111404-1.rs", +"ui/associated-inherent-types/issue-111879-0.rs", +"ui/associated-inherent-types/issue-111879-1.rs", +"ui/associated-item/issue-105449.rs", +"ui/associated-item/issue-48027.rs", +"ui/associated-item/issue-87638.rs", +"ui/associated-type-bounds/issue-102335-ty.rs", +"ui/associated-type-bounds/issue-104916.rs", +"ui/associated-type-bounds/issue-61752.rs", +"ui/associated-type-bounds/issue-70292.rs", +"ui/associated-type-bounds/issue-71443-1.rs", +"ui/associated-type-bounds/issue-71443-2.rs", +"ui/associated-type-bounds/issue-73818.rs", +"ui/associated-type-bounds/issue-79949.rs", +"ui/associated-type-bounds/issue-81193.rs", +"ui/associated-type-bounds/issue-83017.rs", +"ui/associated-type-bounds/issue-99828.rs", +"ui/associated-type-bounds/return-type-notation/issue-120208-higher-ranked-const.rs", +"ui/associated-types/issue-18655.rs", +"ui/associated-types/issue-19081.rs", +"ui/associated-types/issue-19883.rs", +"ui/associated-types/issue-20005.rs", +"ui/associated-types/issue-20825-2.rs", +"ui/associated-types/issue-20825.rs", +"ui/associated-types/issue-21363.rs", +"ui/associated-types/issue-21726.rs", +"ui/associated-types/issue-22037.rs", +"ui/associated-types/issue-22066.rs", +"ui/associated-types/issue-22560.rs", +"ui/associated-types/issue-22828.rs", +"ui/associated-types/issue-23208.rs", +"ui/associated-types/issue-23595-1.rs", +"ui/associated-types/issue-23595-2.rs", +"ui/associated-types/issue-24159.rs", +"ui/associated-types/issue-24204.rs", +"ui/associated-types/issue-24338.rs", +"ui/associated-types/issue-25339.rs", +"ui/associated-types/issue-25700-1.rs", +"ui/associated-types/issue-25700-2.rs", +"ui/associated-types/issue-25700.rs", +"ui/associated-types/issue-26681.rs", +"ui/associated-types/issue-27675-unchecked-bounds.rs", +"ui/associated-types/issue-27901.rs", +"ui/associated-types/issue-28871.rs", +"ui/associated-types/issue-31597.rs", +"ui/associated-types/issue-32323.rs", +"ui/associated-types/issue-32350.rs", +"ui/associated-types/issue-36499.rs", +"ui/associated-types/issue-37808.rs", +"ui/associated-types/issue-37883.rs", +"ui/associated-types/issue-38821.rs", +"ui/associated-types/issue-38917.rs", +"ui/associated-types/issue-39532.rs", +"ui/associated-types/issue-40093.rs", +"ui/associated-types/issue-41868.rs", +"ui/associated-types/issue-43475.rs", +"ui/associated-types/issue-43784-associated-type.rs", +"ui/associated-types/issue-43924.rs", +"ui/associated-types/issue-44153.rs", +"ui/associated-types/issue-47139-1.rs", +"ui/associated-types/issue-47139-2.rs", +"ui/associated-types/issue-47385.rs", +"ui/associated-types/issue-47814.rs", +"ui/associated-types/issue-48010.rs", +"ui/associated-types/issue-48551.rs", +"ui/associated-types/issue-50301.rs", +"ui/associated-types/issue-54108.rs", +"ui/associated-types/issue-54182-1.rs", +"ui/associated-types/issue-54182-2.rs", +"ui/associated-types/issue-54467.rs", +"ui/associated-types/issue-55846.rs", +"ui/associated-types/issue-59324.rs", +"ui/associated-types/issue-62200.rs", +"ui/associated-types/issue-63591.rs", +"ui/associated-types/issue-63593.rs", +"ui/associated-types/issue-64848.rs", +"ui/associated-types/issue-64855-2.rs", +"ui/associated-types/issue-64855.rs", +"ui/associated-types/issue-65774-1.rs", +"ui/associated-types/issue-65774-2.rs", +"ui/associated-types/issue-65934.rs", +"ui/associated-types/issue-67684.rs", +"ui/associated-types/issue-69398.rs", +"ui/associated-types/issue-71113.rs", +"ui/associated-types/issue-72806.rs", +"ui/associated-types/issue-76179.rs", +"ui/associated-types/issue-82079.rs", +"ui/associated-types/issue-85103-layout-debug.rs", +"ui/associated-types/issue-87261.rs", +"ui/associated-types/issue-88856.rs", +"ui/associated-types/issue-91069.rs", +"ui/associated-types/issue-91231.rs", +"ui/associated-types/issue-91234.rs", +"ui/async-await/auxiliary/issue-107036.rs", +"ui/async-await/auxiliary/issue-72470-lib.rs", +"ui/async-await/in-trait/issue-102138.rs", +"ui/async-await/in-trait/issue-102219.rs", +"ui/async-await/in-trait/issue-102310.rs", +"ui/async-await/in-trait/issue-104678.rs", +"ui/async-await/issue-101715.rs", +"ui/async-await/issue-105501.rs", +"ui/async-await/issue-107036.rs", +"ui/async-await/issue-108572.rs", +"ui/async-await/issue-54239-private-type-triggers-lint.rs", +"ui/async-await/issue-60709.rs", +"ui/async-await/issue-61076.rs", +"ui/async-await/issue-61452.rs", +"ui/async-await/issue-61793.rs", +"ui/async-await/issue-62658.rs", +"ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs", +"ui/async-await/issue-63832-await-short-temporary-lifetime.rs", +"ui/async-await/issue-64130-1-sync.rs", +"ui/async-await/issue-64130-2-send.rs", +"ui/async-await/issue-64130-3-other.rs", +"ui/async-await/issue-64130-4-async-move.rs", +"ui/async-await/issue-64130-non-send-future-diags.rs", +"ui/async-await/issue-64391.rs", +"ui/async-await/issue-65634-raw-ident-suggestion.rs", +"ui/async-await/issue-66312.rs", +"ui/async-await/issue-66387-if-without-else.rs", +"ui/async-await/issue-67252-unnamed-future.rs", +"ui/async-await/issue-67651.rs", +"ui/async-await/issue-67765-async-diagnostic.rs", +"ui/async-await/issue-68112.rs", +"ui/async-await/issue-68523-start.rs", +"ui/async-await/issue-68523.rs", +"ui/async-await/issue-69446-fnmut-capture.rs", +"ui/async-await/issue-70594.rs", +"ui/async-await/issue-70818.rs", +"ui/async-await/issue-70935-complex-spans.rs", +"ui/async-await/issue-71137.rs", +"ui/async-await/issue-72442.rs", +"ui/async-await/issue-72470-llvm-dominate.rs", +"ui/async-await/issue-72590-type-error-sized.rs", +"ui/async-await/issue-73050.rs", +"ui/async-await/issue-73137.rs", +"ui/async-await/issue-73541-1.rs", +"ui/async-await/issue-73541-2.rs", +"ui/async-await/issue-73541-3.rs", +"ui/async-await/issue-73541.rs", +"ui/async-await/issue-73741-type-err.rs", +"ui/async-await/issue-74047.rs", +"ui/async-await/issue-74072-lifetime-name-annotations.rs", +"ui/async-await/issue-74497-lifetime-in-opaque.rs", +"ui/async-await/issue-75785-confusing-named-region.rs", +"ui/async-await/issue-76547.rs", +"ui/async-await/issue-77993-2.rs", +"ui/async-await/issue-78115.rs", +"ui/async-await/issue-84841.rs", +"ui/async-await/issue-86507.rs", +"ui/async-await/issue-93197.rs", +"ui/async-await/issue-93648.rs", +"ui/async-await/issue-98634.rs", +"ui/async-await/issues/auxiliary/issue-60674.rs", +"ui/async-await/issues/auxiliary/issue_67893.rs", +"ui/async-await/issues/issue-102206.rs", +"ui/async-await/issues/issue-107280.rs", +"ui/async-await/issues/issue-112225-1.rs", +"ui/async-await/issues/issue-112225-2.rs", +"ui/async-await/issues/issue-51719.rs", +"ui/async-await/issues/issue-51751.rs", +"ui/async-await/issues/issue-53249.rs", +"ui/async-await/issues/issue-54752-async-block.rs", +"ui/async-await/issues/issue-54974.rs", +"ui/async-await/issues/issue-55324.rs", +"ui/async-await/issues/issue-55809.rs", +"ui/async-await/issues/issue-58885.rs", +"ui/async-await/issues/issue-59001.rs", +"ui/async-await/issues/issue-59972.rs", +"ui/async-await/issues/issue-60518.rs", +"ui/async-await/issues/issue-60655-latebound-regions.rs", +"ui/async-await/issues/issue-60674.rs", +"ui/async-await/issues/issue-61187.rs", +"ui/async-await/issues/issue-61986.rs", +"ui/async-await/issues/issue-62009-1.rs", +"ui/async-await/issues/issue-62009-2.rs", +"ui/async-await/issues/issue-62097.rs", +"ui/async-await/issues/issue-62517-1.rs", +"ui/async-await/issues/issue-62517-2.rs", +"ui/async-await/issues/issue-63388-1.rs", +"ui/async-await/issues/issue-63388-2.rs", +"ui/async-await/issues/issue-63388-3.rs", +"ui/async-await/issues/issue-63388-4.rs", +"ui/async-await/issues/issue-64391-2.rs", +"ui/async-await/issues/issue-64433.rs", +"ui/async-await/issues/issue-64477-2.rs", +"ui/async-await/issues/issue-64477.rs", +"ui/async-await/issues/issue-64964.rs", +"ui/async-await/issues/issue-65159.rs", +"ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs", +"ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs", +"ui/async-await/issues/issue-65419/issue-65419-coroutine-resume-after-completion.rs", +"ui/async-await/issues/issue-65436-raw-ptr-not-send.rs", +"ui/async-await/issues/issue-66695-static-refs.rs", +"ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs", +"ui/async-await/issues/issue-67611-static-mut-refs.rs", +"ui/async-await/issues/issue-67893.rs", +"ui/async-await/issues/issue-69307-nested.rs", +"ui/async-await/issues/issue-69307.rs", +"ui/async-await/issues/issue-72312.rs", +"ui/async-await/issues/issue-78600.rs", +"ui/async-await/issues/issue-78654.rs", +"ui/async-await/issues/issue-78938-async-block.rs", +"ui/async-await/issues/issue-95307.rs", +"ui/async-await/return-type-notation/issue-110963-early.rs", +"ui/async-await/return-type-notation/issue-110963-late.rs", +"ui/async-await/track-caller/issue-105134.rs", +"ui/attributes/issue-100631.rs", +"ui/attributes/issue-105594-invalid-attr-validation.rs", +"ui/attributes/issue-115264-expr-field.rs", +"ui/attributes/issue-115264-pat-field.rs", +"ui/attributes/issue-40962.rs", +"ui/attributes/issue-90873.rs", +"ui/auto-traits/issue-117789.rs", +"ui/auto-traits/issue-23080-2.rs", +"ui/auto-traits/issue-23080.rs", +"ui/auto-traits/issue-83857-ub.rs", +"ui/auto-traits/issue-84075.rs", +"ui/auxiliary/issue-13560-1.rs", +"ui/auxiliary/issue-13560-2.rs", +"ui/auxiliary/issue-13560-3.rs", +"ui/auxiliary/issue-16822.rs", +"ui/auxiliary/issue-18502.rs", +"ui/auxiliary/issue-24106.rs", +"ui/auxiliary/issue-76387.rs", +"ui/bench/issue-32062.rs", +"ui/binding/issue-53114-borrow-checks.rs", +"ui/binding/issue-53114-safety-checks.rs", +"ui/binop/issue-25916.rs", +"ui/binop/issue-28837.rs", +"ui/binop/issue-3820.rs", +"ui/binop/issue-62375.rs", +"ui/binop/issue-77910-1.rs", +"ui/binop/issue-77910-2.rs", +"ui/binop/issue-93927.rs", +"ui/block-result/issue-11714.rs", +"ui/block-result/issue-13428.rs", +"ui/block-result/issue-13624.rs", +"ui/block-result/issue-20862.rs", +"ui/block-result/issue-22645.rs", +"ui/block-result/issue-3563.rs", +"ui/block-result/issue-5500.rs", +"ui/borrowck/issue-101119.rs", +"ui/borrowck/issue-102209.rs", +"ui/borrowck/issue-103095.rs", +"ui/borrowck/issue-103250.rs", +"ui/borrowck/issue-103624.rs", +"ui/borrowck/issue-104639-lifetime-order.rs", +"ui/borrowck/issue-10876.rs", +"ui/borrowck/issue-109271-pass-self-into-closure.rs", +"ui/borrowck/issue-111554.rs", +"ui/borrowck/issue-114374-invalid-help-fmt-args.rs", +"ui/borrowck/issue-11493.rs", +"ui/borrowck/issue-115259-suggest-iter-mut.rs", +"ui/borrowck/issue-119915-bad-clone-suggestion.rs", +"ui/borrowck/issue-17263.rs", +"ui/borrowck/issue-17545.rs", +"ui/borrowck/issue-17718-static-move.rs", +"ui/borrowck/issue-20801.rs", +"ui/borrowck/issue-23338-params-outlive-temps-of-body.rs", +"ui/borrowck/issue-24267-flow-exit.rs", +"ui/borrowck/issue-25793.rs", +"ui/borrowck/issue-28934.rs", +"ui/borrowck/issue-29166.rs", +"ui/borrowck/issue-31287-drop-in-guard.rs", +"ui/borrowck/issue-33819.rs", +"ui/borrowck/issue-36082.rs", +"ui/borrowck/issue-41962.rs", +"ui/borrowck/issue-42344.rs", +"ui/borrowck/issue-45199.rs", +"ui/borrowck/issue-45983.rs", +"ui/borrowck/issue-46095.rs", +"ui/borrowck/issue-46471.rs", +"ui/borrowck/issue-47215-ice-from-drop-elab.rs", +"ui/borrowck/issue-47646.rs", +"ui/borrowck/issue-51117.rs", +"ui/borrowck/issue-51301.rs", +"ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs", +"ui/borrowck/issue-51415.rs", +"ui/borrowck/issue-52713-bug.rs", +"ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs", +"ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs", +"ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs", +"ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs", +"ui/borrowck/issue-54499-field-mutation-of-moved-out.rs", +"ui/borrowck/issue-54499-field-mutation-of-never-init.rs", +"ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs", +"ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs", +"ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs", +"ui/borrowck/issue-58776-borrowck-scans-children.rs", +"ui/borrowck/issue-62007-assign-box.rs", +"ui/borrowck/issue-62007-assign-field.rs", +"ui/borrowck/issue-62107-match-arm-scopes.rs", +"ui/borrowck/issue-62387-suggest-iter-mut-2.rs", +"ui/borrowck/issue-62387-suggest-iter-mut.rs", +"ui/borrowck/issue-64453.rs", +"ui/borrowck/issue-69789-iterator-mut-suggestion.rs", +"ui/borrowck/issue-70919-drop-in-loop.rs", +"ui/borrowck/issue-71546.rs", +"ui/borrowck/issue-7573.rs", +"ui/borrowck/issue-80772.rs", +"ui/borrowck/issue-81365-1.rs", +"ui/borrowck/issue-81365-10.rs", +"ui/borrowck/issue-81365-11.rs", +"ui/borrowck/issue-81365-2.rs", +"ui/borrowck/issue-81365-3.rs", +"ui/borrowck/issue-81365-4.rs", +"ui/borrowck/issue-81365-5.rs", +"ui/borrowck/issue-81365-6.rs", +"ui/borrowck/issue-81365-7.rs", +"ui/borrowck/issue-81365-8.rs", +"ui/borrowck/issue-81365-9.rs", +"ui/borrowck/issue-81899.rs", +"ui/borrowck/issue-82032.rs", +"ui/borrowck/issue-82126-mismatched-subst-and-hir.rs", +"ui/borrowck/issue-82462.rs", +"ui/borrowck/issue-83309-ice-immut-in-for-loop.rs", +"ui/borrowck/issue-83760.rs", +"ui/borrowck/issue-83924.rs", +"ui/borrowck/issue-85581.rs", +"ui/borrowck/issue-85765-closure.rs", +"ui/borrowck/issue-85765.rs", +"ui/borrowck/issue-87456-point-to-closure.rs", +"ui/borrowck/issue-88434-minimal-example.rs", +"ui/borrowck/issue-88434-removal-index-should-be-less.rs", +"ui/borrowck/issue-91206.rs", +"ui/borrowck/issue-92015.rs", +"ui/borrowck/issue-92157.rs", +"ui/borrowck/issue-93078.rs", +"ui/borrowck/issue-93093.rs", +"ui/borrowck/issue-95079-missing-move-in-nested-closure.rs", +"ui/box/issue-82446.rs", +"ui/box/issue-95036.rs", +"ui/c-variadic/issue-32201.rs", +"ui/c-variadic/issue-86053-1.rs", +"ui/c-variadic/issue-86053-2.rs", +"ui/cast/issue-106883-is-empty.rs", +"ui/cast/issue-10991.rs", +"ui/cast/issue-17444.rs", +"ui/cast/issue-84213.rs", +"ui/cast/issue-85586.rs", +"ui/cast/issue-88621.rs", +"ui/cast/issue-89497.rs", +"ui/closure-expected-type/issue-24421.rs", +"ui/closure_context/issue-26046-fn-mut.rs", +"ui/closure_context/issue-26046-fn-once.rs", +"ui/closure_context/issue-42065.rs", +"ui/closures/2229_closure_analysis/issue-118144.rs", +"ui/closures/2229_closure_analysis/issue-87378.rs", +"ui/closures/2229_closure_analysis/issue-87987.rs", +"ui/closures/2229_closure_analysis/issue-88118-2.rs", +"ui/closures/2229_closure_analysis/issue-88476.rs", +"ui/closures/2229_closure_analysis/issue-89606.rs", +"ui/closures/2229_closure_analysis/issue-90465.rs", +"ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs", +"ui/closures/2229_closure_analysis/issue_88118.rs", +"ui/closures/2229_closure_analysis/match/issue-87097.rs", +"ui/closures/2229_closure_analysis/match/issue-87426.rs", +"ui/closures/2229_closure_analysis/match/issue-87988.rs", +"ui/closures/2229_closure_analysis/match/issue-88331.rs", +"ui/closures/2229_closure_analysis/migrations/issue-78720.rs", +"ui/closures/2229_closure_analysis/migrations/issue-86753.rs", +"ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs", +"ui/closures/2229_closure_analysis/run_pass/issue-87378.rs", +"ui/closures/2229_closure_analysis/run_pass/issue-88372.rs", +"ui/closures/2229_closure_analysis/run_pass/issue-88431.rs", +"ui/closures/2229_closure_analysis/run_pass/issue-88476.rs", +"ui/closures/issue-101696.rs", +"ui/closures/issue-102089-multiple-opaque-cast.rs", +"ui/closures/issue-10398.rs", +"ui/closures/issue-10682.rs", +"ui/closures/issue-109188.rs", +"ui/closures/issue-111932.rs", +"ui/closures/issue-113087.rs", +"ui/closures/issue-11873.rs", +"ui/closures/issue-23012-supertrait-signature-inference.rs", +"ui/closures/issue-25439.rs", +"ui/closures/issue-41366.rs", +"ui/closures/issue-42463.rs", +"ui/closures/issue-46742.rs", +"ui/closures/issue-48109.rs", +"ui/closures/issue-52437.rs", +"ui/closures/issue-67123.rs", +"ui/closures/issue-6801.rs", +"ui/closures/issue-68025.rs", +"ui/closures/issue-72408-nested-closures-exponential.rs", +"ui/closures/issue-78720.rs", +"ui/closures/issue-80313-mutable-borrow-in-closure.rs", +"ui/closures/issue-80313-mutable-borrow-in-move-closure.rs", +"ui/closures/issue-80313-mutation-in-closure.rs", +"ui/closures/issue-80313-mutation-in-move-closure.rs", +"ui/closures/issue-81700-mut-borrow.rs", +"ui/closures/issue-82438-mut-without-upvar.rs", +"ui/closures/issue-84044-drop-non-mut.rs", +"ui/closures/issue-84128.rs", +"ui/closures/issue-868.rs", +"ui/closures/issue-87461.rs", +"ui/closures/issue-87814-1.rs", +"ui/closures/issue-87814-2.rs", +"ui/closures/issue-90871.rs", +"ui/closures/issue-97607.rs", +"ui/closures/issue-99565.rs", +"ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs", +"ui/codegen/auxiliary/issue-97708-aux.rs", +"ui/codegen/issue-101585-128bit-repeat.rs", +"ui/codegen/issue-16602-1.rs", +"ui/codegen/issue-16602-2.rs", +"ui/codegen/issue-16602-3.rs", +"ui/codegen/issue-28950.rs", +"ui/codegen/issue-55976.rs", +"ui/codegen/issue-63787.rs", +"ui/codegen/issue-64401.rs", +"ui/codegen/issue-79865-llvm-miscompile.rs", +"ui/codegen/issue-82833-slice-miscompile.rs", +"ui/codegen/issue-82859-slice-miscompile.rs", +"ui/codegen/issue-88043-bb-does-not-have-terminator.rs", +"ui/codegen/issue-97708.rs", +"ui/codegen/issue-99551.rs", +"ui/codemap_tests/issue-11715.rs", +"ui/codemap_tests/issue-28308.rs", +"ui/coercion/auxiliary/issue-39823.rs", +"ui/coercion/issue-101066.rs", +"ui/coercion/issue-14589.rs", +"ui/coercion/issue-26905-rpass.rs", +"ui/coercion/issue-26905.rs", +"ui/coercion/issue-36007.rs", +"ui/coercion/issue-37655.rs", +"ui/coercion/issue-3794.rs", +"ui/coercion/issue-39823.rs", +"ui/coercion/issue-53475.rs", +"ui/coercion/issue-73886.rs", +"ui/coercion/issue-88097.rs", +"ui/coherence/issue-85026.rs", +"ui/coherence/issue-99663-2.rs", +"ui/coherence/issue-99663.rs", +"ui/command/issue-10626.rs", +"ui/compare-method/issue-90444.rs", +"ui/conditional-compilation/issue-34028.rs", +"ui/confuse-field-and-method/issue-18343.rs", +"ui/confuse-field-and-method/issue-2392.rs", +"ui/confuse-field-and-method/issue-32128.rs", +"ui/confuse-field-and-method/issue-33784.rs", +"ui/const-generics/generic_arg_infer/issue-91614.rs", +"ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs", +"ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.rs", +"ui/const-generics/generic_const_exprs/issue-100217.rs", +"ui/const-generics/generic_const_exprs/issue-100360.rs", +"ui/const-generics/generic_const_exprs/issue-102074.rs", +"ui/const-generics/generic_const_exprs/issue-102768.rs", +"ui/const-generics/generic_const_exprs/issue-105257.rs", +"ui/const-generics/generic_const_exprs/issue-105608.rs", +"ui/const-generics/generic_const_exprs/issue-109141.rs", +"ui/const-generics/generic_const_exprs/issue-62504.rs", +"ui/const-generics/generic_const_exprs/issue-69654.rs", +"ui/const-generics/generic_const_exprs/issue-72787.rs", +"ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs", +"ui/const-generics/generic_const_exprs/issue-73298.rs", +"ui/const-generics/generic_const_exprs/issue-73899.rs", +"ui/const-generics/generic_const_exprs/issue-74634.rs", +"ui/const-generics/generic_const_exprs/issue-74713.rs", +"ui/const-generics/generic_const_exprs/issue-76595.rs", +"ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs", +"ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs", +"ui/const-generics/generic_const_exprs/issue-80742.rs", +"ui/const-generics/generic_const_exprs/issue-82268.rs", +"ui/const-generics/generic_const_exprs/issue-83765.rs", +"ui/const-generics/generic_const_exprs/issue-83972.rs", +"ui/const-generics/generic_const_exprs/issue-84408.rs", +"ui/const-generics/generic_const_exprs/issue-84669.rs", +"ui/const-generics/generic_const_exprs/issue-85848.rs", +"ui/const-generics/generic_const_exprs/issue-86710.rs", +"ui/const-generics/generic_const_exprs/issue-89851.rs", +"ui/const-generics/generic_const_exprs/issue-90847.rs", +"ui/const-generics/generic_const_exprs/issue-94287.rs", +"ui/const-generics/generic_const_exprs/issue-94293.rs", +"ui/const-generics/generic_const_exprs/issue-96699.rs", +"ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs", +"ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs", +"ui/const-generics/generic_const_exprs/issue-99647.rs", +"ui/const-generics/generic_const_exprs/issue-99705.rs", +"ui/const-generics/infer/issue-77092.rs", +"ui/const-generics/issue-102124.rs", +"ui/const-generics/issue-105689.rs", +"ui/const-generics/issue-106419-struct-with-multiple-const-params.rs", +"ui/const-generics/issue-112505-overflow.rs", +"ui/const-generics/issue-46511.rs", +"ui/const-generics/issue-66451.rs", +"ui/const-generics/issue-70408.rs", +"ui/const-generics/issue-80471.rs", +"ui/const-generics/issue-93647.rs", +"ui/const-generics/issue-97007.rs", +"ui/const-generics/issues/issue-100313.rs", +"ui/const-generics/issues/issue-105037.rs", +"ui/const-generics/issues/issue-105821.rs", +"ui/const-generics/issues/issue-56445-1.rs", +"ui/const-generics/issues/issue-56445-2.rs", +"ui/const-generics/issues/issue-56445-3.rs", +"ui/const-generics/issues/issue-60818-struct-constructors.rs", +"ui/const-generics/issues/issue-61336-1.rs", +"ui/const-generics/issues/issue-61336-2.rs", +"ui/const-generics/issues/issue-61336.rs", +"ui/const-generics/issues/issue-61422.rs", +"ui/const-generics/issues/issue-61432.rs", +"ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs", +"ui/const-generics/issues/issue-62878.rs", +"ui/const-generics/issues/issue-63322-forbid-dyn.rs", +"ui/const-generics/issues/issue-64519.rs", +"ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs", +"ui/const-generics/issues/issue-66906.rs", +"ui/const-generics/issues/issue-67185-1.rs", +"ui/const-generics/issues/issue-67185-2.rs", +"ui/const-generics/issues/issue-67375.rs", +"ui/const-generics/issues/issue-67739.rs", +"ui/const-generics/issues/issue-67945-1.rs", +"ui/const-generics/issues/issue-67945-2.rs", +"ui/const-generics/issues/issue-67945-3.rs", +"ui/const-generics/issues/issue-67945-4.rs", +"ui/const-generics/issues/issue-68104-print-stack-overflow.rs", +"ui/const-generics/issues/issue-68366.rs", +"ui/const-generics/issues/issue-68596.rs", +"ui/const-generics/issues/issue-68615-adt.rs", +"ui/const-generics/issues/issue-68615-array.rs", +"ui/const-generics/issues/issue-69654-run-pass.rs", +"ui/const-generics/issues/issue-70125-1.rs", +"ui/const-generics/issues/issue-70125-2.rs", +"ui/const-generics/issues/issue-70167.rs", +"ui/const-generics/issues/issue-70180-1-stalled_on.rs", +"ui/const-generics/issues/issue-70180-2-stalled_on.rs", +"ui/const-generics/issues/issue-70225.rs", +"ui/const-generics/issues/issue-70273-assoc-fn.rs", +"ui/const-generics/issues/issue-71169.rs", +"ui/const-generics/issues/issue-71202.rs", +"ui/const-generics/issues/issue-71381.rs", +"ui/const-generics/issues/issue-71382.rs", +"ui/const-generics/issues/issue-71547.rs", +"ui/const-generics/issues/issue-71611.rs", +"ui/const-generics/issues/issue-71986.rs", +"ui/const-generics/issues/issue-72352.rs", +"ui/const-generics/issues/issue-72845.rs", +"ui/const-generics/issues/issue-73120.rs", +"ui/const-generics/issues/issue-73260.rs", +"ui/const-generics/issues/issue-73491.rs", +"ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs", +"ui/const-generics/issues/issue-74101.rs", +"ui/const-generics/issues/issue-74255.rs", +"ui/const-generics/issues/issue-74906.rs", +"ui/const-generics/issues/issue-74950.rs", +"ui/const-generics/issues/issue-75047.rs", +"ui/const-generics/issues/issue-75299.rs", +"ui/const-generics/issues/issue-76701-ty-param-in-const.rs", +"ui/const-generics/issues/issue-79674.rs", +"ui/const-generics/issues/issue-80062.rs", +"ui/const-generics/issues/issue-80375.rs", +"ui/const-generics/issues/issue-82956.rs", +"ui/const-generics/issues/issue-83249.rs", +"ui/const-generics/issues/issue-83288.rs", +"ui/const-generics/issues/issue-83466.rs", +"ui/const-generics/issues/issue-83765.rs", +"ui/const-generics/issues/issue-84659.rs", +"ui/const-generics/issues/issue-85031-2.rs", +"ui/const-generics/issues/issue-86033.rs", +"ui/const-generics/issues/issue-86530.rs", +"ui/const-generics/issues/issue-86535-2.rs", +"ui/const-generics/issues/issue-86535.rs", +"ui/const-generics/issues/issue-86820.rs", +"ui/const-generics/issues/issue-87076.rs", +"ui/const-generics/issues/issue-87470.rs", +"ui/const-generics/issues/issue-87493.rs", +"ui/const-generics/issues/issue-87964.rs", +"ui/const-generics/issues/issue-88119.rs", +"ui/const-generics/issues/issue-88468.rs", +"ui/const-generics/issues/issue-88997.rs", +"ui/const-generics/issues/issue-89146.rs", +"ui/const-generics/issues/issue-89304.rs", +"ui/const-generics/issues/issue-89320.rs", +"ui/const-generics/issues/issue-89334.rs", +"ui/const-generics/issues/issue-90318.rs", +"ui/const-generics/issues/issue-90364.rs", +"ui/const-generics/issues/issue-90455.rs", +"ui/const-generics/issues/issue-92186.rs", +"ui/const-generics/issues/issue-96654.rs", +"ui/const-generics/issues/issue-97278.rs", +"ui/const-generics/issues/issue-97634.rs", +"ui/const-generics/issues/issue-98629.rs", +"ui/const-generics/issues/issue-99641.rs", +"ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs", +"ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs", +"ui/const-generics/parser-error-recovery/issue-89013-type.rs", +"ui/const-generics/parser-error-recovery/issue-89013.rs", +"ui/const-generics/type-dependent/issue-61936.rs", +"ui/const-generics/type-dependent/issue-63695.rs", +"ui/const-generics/type-dependent/issue-67144-1.rs", +"ui/const-generics/type-dependent/issue-67144-2.rs", +"ui/const-generics/type-dependent/issue-69816.rs", +"ui/const-generics/type-dependent/issue-70217.rs", +"ui/const-generics/type-dependent/issue-70507.rs", +"ui/const-generics/type-dependent/issue-70586.rs", +"ui/const-generics/type-dependent/issue-71348.rs", +"ui/const-generics/type-dependent/issue-71382.rs", +"ui/const-generics/type-dependent/issue-71805.rs", +"ui/const-generics/type-dependent/issue-73730.rs", +"ui/const_prop/issue-102553.rs", +"ui/const_prop/issue-86351.rs", +"ui/consts/auxiliary/issue-17718-aux.rs", +"ui/consts/auxiliary/issue-63226.rs", +"ui/consts/const-eval/issue-100878.rs", +"ui/consts/const-eval/issue-104390.rs", +"ui/consts/const-eval/issue-114994-fail.rs", +"ui/consts/const-eval/issue-114994.rs", +"ui/consts/const-eval/issue-43197.rs", +"ui/consts/const-eval/issue-44578.rs", +"ui/consts/const-eval/issue-47971.rs", +"ui/consts/const-eval/issue-49296.rs", +"ui/consts/const-eval/issue-50706.rs", +"ui/consts/const-eval/issue-50814-2.rs", +"ui/consts/const-eval/issue-50814.rs", +"ui/consts/const-eval/issue-51300.rs", +"ui/consts/const-eval/issue-52475.rs", +"ui/consts/const-eval/issue-53157.rs", +"ui/consts/const-eval/issue-53401.rs", +"ui/consts/const-eval/issue-55541.rs", +"ui/consts/const-eval/issue-64908.rs", +"ui/consts/const-eval/issue-64970.rs", +"ui/consts/const-eval/issue-65394.rs", +"ui/consts/const-eval/issue-70723.rs", +"ui/consts/const-eval/issue-70804-fn-subtyping.rs", +"ui/consts/const-eval/issue-84957-const-str-as-bytes.rs", +"ui/consts/const-eval/issue-85155.rs", +"ui/consts/const-eval/issue-85907.rs", +"ui/consts/const-eval/issue-91827-extern-types-field-offset.rs", +"ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs", +"ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs", +"ui/consts/const-mut-refs/issue-76510.rs", +"ui/consts/const_in_pattern/issue-34784-match-on-non-int-raw-ptr.rs", +"ui/consts/const_in_pattern/issue-44333.rs", +"ui/consts/const_in_pattern/issue-53708.rs", +"ui/consts/const_in_pattern/issue-62614.rs", +"ui/consts/const_in_pattern/issue-65466.rs", +"ui/consts/const_in_pattern/issue-73431.rs", +"ui/consts/control-flow/issue-46843.rs", +"ui/consts/control-flow/issue-50577.rs", +"ui/consts/extra-const-ub/issue-100771.rs", +"ui/consts/extra-const-ub/issue-101034.rs", +"ui/consts/issue-102117.rs", +"ui/consts/issue-103790.rs", +"ui/consts/issue-104155.rs", +"ui/consts/issue-104396.rs", +"ui/consts/issue-104609.rs", +"ui/consts/issue-104768.rs", +"ui/consts/issue-105536-const-val-roundtrip-ptr-eq.rs", +"ui/consts/issue-116186.rs", +"ui/consts/issue-13837.rs", +"ui/consts/issue-13902.rs", +"ui/consts/issue-16538.rs", +"ui/consts/issue-17074.rs", +"ui/consts/issue-17458.rs", +"ui/consts/issue-17718-borrow-interior.rs", +"ui/consts/issue-17718-const-bad-values.rs", +"ui/consts/issue-17718-const-borrow.rs", +"ui/consts/issue-17718-constants-not-static.rs", +"ui/consts/issue-17718-references.rs", +"ui/consts/issue-17718.rs", +"ui/consts/issue-17756.rs", +"ui/consts/issue-18294.rs", +"ui/consts/issue-19244.rs", +"ui/consts/issue-21562.rs", +"ui/consts/issue-21721.rs", +"ui/consts/issue-23833.rs", +"ui/consts/issue-23968-const-not-overflow.rs", +"ui/consts/issue-25826.rs", +"ui/consts/issue-27890.rs", +"ui/consts/issue-28113.rs", +"ui/consts/issue-28822.rs", +"ui/consts/issue-29798.rs", +"ui/consts/issue-29914-2.rs", +"ui/consts/issue-29914-3.rs", +"ui/consts/issue-29914.rs", +"ui/consts/issue-29927-1.rs", +"ui/consts/issue-29927.rs", +"ui/consts/issue-32829-2.rs", +"ui/consts/issue-32829.rs", +"ui/consts/issue-33537.rs", +"ui/consts/issue-33903.rs", +"ui/consts/issue-3521.rs", +"ui/consts/issue-36163.rs", +"ui/consts/issue-37222.rs", +"ui/consts/issue-37550-1.rs", +"ui/consts/issue-37550.rs", +"ui/consts/issue-37991.rs", +"ui/consts/issue-39161-bogus-error.rs", +"ui/consts/issue-39974.rs", +"ui/consts/issue-43105.rs", +"ui/consts/issue-44255.rs", +"ui/consts/issue-44415.rs", +"ui/consts/issue-46553.rs", +"ui/consts/issue-47789.rs", +"ui/consts/issue-50439.rs", +"ui/consts/issue-52023-array-size-pointer-cast.rs", +"ui/consts/issue-52060.rs", +"ui/consts/issue-54224.rs", +"ui/consts/issue-54348.rs", +"ui/consts/issue-54387.rs", +"ui/consts/issue-54582.rs", +"ui/consts/issue-54954.rs", +"ui/consts/issue-56164.rs", +"ui/consts/issue-58435-ice-with-assoc-const.rs", +"ui/consts/issue-62045.rs", +"ui/consts/issue-63226.rs", +"ui/consts/issue-63952.rs", +"ui/consts/issue-64059.rs", +"ui/consts/issue-64506.rs", +"ui/consts/issue-64662.rs", +"ui/consts/issue-65348.rs", +"ui/consts/issue-66342.rs", +"ui/consts/issue-66345.rs", +"ui/consts/issue-66397.rs", +"ui/consts/issue-66693-panic-in-array-len.rs", +"ui/consts/issue-66693.rs", +"ui/consts/issue-66787.rs", +"ui/consts/issue-67529.rs", +"ui/consts/issue-67640.rs", +"ui/consts/issue-67641.rs", +"ui/consts/issue-67696-const-prop-ice.rs", +"ui/consts/issue-67862.rs", +"ui/consts/issue-68264-overflow.rs", +"ui/consts/issue-68542-closure-in-array-len.rs", +"ui/consts/issue-68684.rs", +"ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs", +"ui/consts/issue-69310-array-size-lit-wrong-ty.rs", +"ui/consts/issue-69312.rs", +"ui/consts/issue-69488.rs", +"ui/consts/issue-69532.rs", +"ui/consts/issue-6991.rs", +"ui/consts/issue-70773-mir-typeck-lt-norm.rs", +"ui/consts/issue-70942-trait-vs-impl-mismatch.rs", +"ui/consts/issue-73976-monomorphic.rs", +"ui/consts/issue-73976-polymorphic.rs", +"ui/consts/issue-76064.rs", +"ui/consts/issue-77062-large-zst-array.rs", +"ui/consts/issue-78655.rs", +"ui/consts/issue-79137-monomorphic.rs", +"ui/consts/issue-79137-toogeneric.rs", +"ui/consts/issue-79152-const-array-index.rs", +"ui/consts/issue-79690.rs", +"ui/consts/issue-87046.rs", +"ui/consts/issue-88071.rs", +"ui/consts/issue-88649.rs", +"ui/consts/issue-89088.rs", +"ui/consts/issue-90762.rs", +"ui/consts/issue-90870.rs", +"ui/consts/issue-90878-2.rs", +"ui/consts/issue-90878-3.rs", +"ui/consts/issue-90878.rs", +"ui/consts/issue-91434.rs", +"ui/consts/issue-91560.rs", +"ui/consts/issue-94371.rs", +"ui/consts/issue-94675.rs", +"ui/consts/issue-96169.rs", +"ui/coroutine/issue-102645.rs", +"ui/coroutine/issue-105084.rs", +"ui/coroutine/issue-110929-coroutine-conflict-error-ice.rs", +"ui/coroutine/issue-113279.rs", +"ui/coroutine/issue-44197.rs", +"ui/coroutine/issue-45729-unsafe-in-coroutine.rs", +"ui/coroutine/issue-48048.rs", +"ui/coroutine/issue-52304.rs", +"ui/coroutine/issue-52398.rs", +"ui/coroutine/issue-53548-1.rs", +"ui/coroutine/issue-53548.rs", +"ui/coroutine/issue-57017.rs", +"ui/coroutine/issue-57084.rs", +"ui/coroutine/issue-57478.rs", +"ui/coroutine/issue-58888.rs", +"ui/coroutine/issue-61442-stmt-expr-with-drop.rs", +"ui/coroutine/issue-62506-two_awaits.rs", +"ui/coroutine/issue-64620-yield-array-element.rs", +"ui/coroutine/issue-68112.rs", +"ui/coroutine/issue-69017.rs", +"ui/coroutine/issue-69039.rs", +"ui/coroutine/issue-87142.rs", +"ui/coroutine/issue-88653.rs", +"ui/coroutine/issue-91477.rs", +"ui/coroutine/issue-93161.rs", +"ui/cross-crate/issue-64872/issue-64872.rs", +"ui/cycle-trait/issue-12511.rs", +"ui/debuginfo/issue-105386-debuginfo-ub.rs", +"ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs", +"ui/deprecation/issue-84637-deprecated-associated-function.rs", +"ui/derived-errors/issue-30580.rs", +"ui/derived-errors/issue-31997-1.rs", +"ui/derived-errors/issue-31997.rs", +"ui/derives/issue-36617.rs", +"ui/derives/issue-43023.rs", +"ui/derives/issue-91492.rs", +"ui/derives/issue-91550.rs", +"ui/derives/issue-97343.rs", +"ui/deriving/issue-103157.rs", +"ui/deriving/issue-15689-1.rs", +"ui/deriving/issue-15689-2.rs", +"ui/deriving/issue-19358.rs", +"ui/deriving/issue-3935.rs", +"ui/deriving/issue-58319.rs", +"ui/deriving/issue-6341.rs", +"ui/deriving/issue-89188-gat-hrtb.rs", +"ui/did_you_mean/issue-103909.rs", +"ui/did_you_mean/issue-105225-named-args.rs", +"ui/did_you_mean/issue-105225.rs", +"ui/did_you_mean/issue-114112.rs", +"ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs", +"ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs", +"ui/did_you_mean/issue-31424.rs", +"ui/did_you_mean/issue-34126.rs", +"ui/did_you_mean/issue-34337.rs", +"ui/did_you_mean/issue-35937.rs", +"ui/did_you_mean/issue-36798.rs", +"ui/did_you_mean/issue-36798_unknown_field.rs", +"ui/did_you_mean/issue-37139.rs", +"ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs", +"ui/did_you_mean/issue-38147-1.rs", +"ui/did_you_mean/issue-38147-2.rs", +"ui/did_you_mean/issue-38147-3.rs", +"ui/did_you_mean/issue-38147-4.rs", +"ui/did_you_mean/issue-39544.rs", +"ui/did_you_mean/issue-39802-show-5-trait-impls.rs", +"ui/did_you_mean/issue-40006.rs", +"ui/did_you_mean/issue-40396.rs", +"ui/did_you_mean/issue-40823.rs", +"ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs", +"ui/did_you_mean/issue-42599_available_fields_note.rs", +"ui/did_you_mean/issue-42764.rs", +"ui/did_you_mean/issue-43871-enum-instead-of-variant.rs", +"ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs", +"ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs", +"ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs", +"ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs", +"ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs", +"ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs", +"ui/did_you_mean/issue-54109-without-witness.rs", +"ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs", +"ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs", +"ui/drop/auxiliary/issue-10028.rs", +"ui/drop/issue-100276.rs", +"ui/drop/issue-10028.rs", +"ui/drop/issue-103107.rs", +"ui/drop/issue-110682.rs", +"ui/drop/issue-17718-const-destructors.rs", +"ui/drop/issue-21486.rs", +"ui/drop/issue-23338-ensure-param-drop-order.rs", +"ui/drop/issue-2734.rs", +"ui/drop/issue-2735-2.rs", +"ui/drop/issue-2735-3.rs", +"ui/drop/issue-2735.rs", +"ui/drop/issue-30018-nopanic.rs", +"ui/drop/issue-35546.rs", +"ui/drop/issue-48962.rs", +"ui/drop/issue-90752-raw-ptr-shenanigans.rs", +"ui/drop/issue-90752.rs", +"ui/drop/issue-979.rs", +"ui/dropck/issue-24805-dropck-itemless.rs", +"ui/dropck/issue-28498-ugeh-with-lifetime-param.rs", +"ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs", +"ui/dropck/issue-28498-ugeh-with-trait-bound.rs", +"ui/dropck/issue-29844.rs", +"ui/dropck/issue-34053.rs", +"ui/dropck/issue-38868.rs", +"ui/dropck/issue-54943-1.rs", +"ui/dropck/issue-54943-2.rs", +"ui/dst/issue-113447.rs", +"ui/dst/issue-90528-unsizing-not-suggestion-110063.rs", +"ui/dst/issue-90528-unsizing-suggestion-1.rs", +"ui/dst/issue-90528-unsizing-suggestion-2.rs", +"ui/dst/issue-90528-unsizing-suggestion-3.rs", +"ui/dst/issue-90528-unsizing-suggestion-4.rs", +"ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs", +"ui/dyn-star/issue-102430.rs", +"ui/empty/issue-37026.rs", +"ui/entry-point/issue-118772.rs", +"ui/enum-discriminant/auxiliary/issue-41394.rs", +"ui/enum-discriminant/issue-104519.rs", +"ui/enum-discriminant/issue-41394-rpass.rs", +"ui/enum-discriminant/issue-41394.rs", +"ui/enum-discriminant/issue-43398.rs", +"ui/enum-discriminant/issue-46519.rs", +"ui/enum-discriminant/issue-50689.rs", +"ui/enum-discriminant/issue-51582.rs", +"ui/enum-discriminant/issue-61696.rs", +"ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs", +"ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs", +"ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs", +"ui/enum-discriminant/issue-70509-partial_eq.rs", +"ui/enum-discriminant/issue-72554.rs", +"ui/enum-discriminant/issue-90038.rs", +"ui/enum/issue-1821.rs", +"ui/enum/issue-42747.rs", +"ui/enum/issue-67945-1.rs", +"ui/enum/issue-67945-2.rs", +"ui/error-codes/e0119/auxiliary/issue-23563-a.rs", +"ui/error-codes/e0119/issue-23563.rs", +"ui/error-codes/e0119/issue-27403.rs", +"ui/error-codes/e0119/issue-28981.rs", +"ui/errors/issue-104621-extern-bad-file.rs", +"ui/errors/issue-104621-extern-not-file.rs", +"ui/errors/issue-89280-emitter-overflow-splice-lines.rs", +"ui/errors/issue-99572-impl-trait-on-pointer.rs", +"ui/expr/if/issue-4201.rs", +"ui/extenv/issue-110547.rs", +"ui/extenv/issue-55897.rs", +"ui/extern/auxiliary/issue-80074-macro-2.rs", +"ui/extern/auxiliary/issue-80074-macro.rs", +"ui/extern/issue-10025.rs", +"ui/extern/issue-10763.rs", +"ui/extern/issue-10764-rpass.rs", +"ui/extern/issue-112363-extern-item-where-clauses-debug-ice.rs", +"ui/extern/issue-116203.rs", +"ui/extern/issue-1251.rs", +"ui/extern/issue-13655.rs", +"ui/extern/issue-16250.rs", +"ui/extern/issue-18576.rs", +"ui/extern/issue-18819.rs", +"ui/extern/issue-28324.rs", +"ui/extern/issue-36122-accessing-externed-dst.rs", +"ui/extern/issue-47725.rs", +"ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs", +"ui/extern/issue-64655-extern-rust-must-allow-unwind.rs", +"ui/extern/issue-80074.rs", +"ui/extern/issue-95829.rs", +"ui/feature-gates/issue-43106-gating-of-bench.rs", +"ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs", +"ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs", +"ui/feature-gates/issue-43106-gating-of-deprecated.rs", +"ui/feature-gates/issue-43106-gating-of-derive-2.rs", +"ui/feature-gates/issue-43106-gating-of-derive.rs", +"ui/feature-gates/issue-43106-gating-of-macro_escape.rs", +"ui/feature-gates/issue-43106-gating-of-macro_use.rs", +"ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs", +"ui/feature-gates/issue-43106-gating-of-stable.rs", +"ui/feature-gates/issue-43106-gating-of-test.rs", +"ui/feature-gates/issue-43106-gating-of-unstable.rs", +"ui/feature-gates/issue-49983-see-issue-0.rs", +"ui/fmt/issue-103826.rs", +"ui/fmt/issue-104142.rs", +"ui/fmt/issue-23781.rs", +"ui/fmt/issue-75307.rs", +"ui/fmt/issue-86085.rs", +"ui/fmt/issue-89173.rs", +"ui/fmt/issue-91556.rs", +"ui/fn/issue-3044.rs", +"ui/fn/issue-3099.rs", +"ui/fn/issue-3904.rs", +"ui/fn/issue-39259.rs", +"ui/fn/issue-80179.rs", +"ui/for-loop-while/issue-1257.rs", +"ui/for-loop-while/issue-2216.rs", +"ui/for-loop-while/issue-51345.rs", +"ui/for-loop-while/issue-69841.rs", +"ui/for/issue-20605.rs", +"ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs", +"ui/foreign/issue-91370-foreign-fn-block-impl.rs", +"ui/foreign/issue-99276-same-type-lifetimes.rs", +"ui/function-pointer/issue-102289.rs", +"ui/functions-closures/closure-expected-type/issue-38714.rs", +"ui/generic-associated-types/bugs/issue-100013.rs", +"ui/generic-associated-types/bugs/issue-80626.rs", +"ui/generic-associated-types/bugs/issue-87735.rs", +"ui/generic-associated-types/bugs/issue-87755.rs", +"ui/generic-associated-types/bugs/issue-87803.rs", +"ui/generic-associated-types/bugs/issue-88382.rs", +"ui/generic-associated-types/bugs/issue-88460.rs", +"ui/generic-associated-types/bugs/issue-88526.rs", +"ui/generic-associated-types/bugs/issue-91762.rs", +"ui/generic-associated-types/issue-101020.rs", +"ui/generic-associated-types/issue-102114.rs", +"ui/generic-associated-types/issue-102333.rs", +"ui/generic-associated-types/issue-102335-gat.rs", +"ui/generic-associated-types/issue-119942-unsatisified-gat-bound-during-assoc-ty-selection.rs", +"ui/generic-associated-types/issue-47206-where-clause.rs", +"ui/generic-associated-types/issue-58694-parameter-out-of-range.rs", +"ui/generic-associated-types/issue-62326-parameter-out-of-range.rs", +"ui/generic-associated-types/issue-67424.rs", +"ui/generic-associated-types/issue-67510-pass.rs", +"ui/generic-associated-types/issue-67510.rs", +"ui/generic-associated-types/issue-68641-check-gat-bounds.rs", +"ui/generic-associated-types/issue-68642-broken-llvm-ir.rs", +"ui/generic-associated-types/issue-68643-broken-mir.rs", +"ui/generic-associated-types/issue-68644-codegen-selection.rs", +"ui/generic-associated-types/issue-68645-codegen-fulfillment.rs", +"ui/generic-associated-types/issue-68648-1.rs", +"ui/generic-associated-types/issue-68648-2.rs", +"ui/generic-associated-types/issue-68649-pass.rs", +"ui/generic-associated-types/issue-68653.rs", +"ui/generic-associated-types/issue-68656-unsized-values.rs", +"ui/generic-associated-types/issue-70303.rs", +"ui/generic-associated-types/issue-70304.rs", +"ui/generic-associated-types/issue-71176.rs", +"ui/generic-associated-types/issue-74684-1.rs", +"ui/generic-associated-types/issue-74684-2.rs", +"ui/generic-associated-types/issue-74816.rs", +"ui/generic-associated-types/issue-74824.rs", +"ui/generic-associated-types/issue-76407.rs", +"ui/generic-associated-types/issue-76535.rs", +"ui/generic-associated-types/issue-76826.rs", +"ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs", +"ui/generic-associated-types/issue-78671.rs", +"ui/generic-associated-types/issue-79422.rs", +"ui/generic-associated-types/issue-79636-1.rs", +"ui/generic-associated-types/issue-79636-2.rs", +"ui/generic-associated-types/issue-80433-reduced.rs", +"ui/generic-associated-types/issue-80433.rs", +"ui/generic-associated-types/issue-81487.rs", +"ui/generic-associated-types/issue-81712-cyclic-traits.rs", +"ui/generic-associated-types/issue-81862.rs", +"ui/generic-associated-types/issue-84931.rs", +"ui/generic-associated-types/issue-85921.rs", +"ui/generic-associated-types/issue-86218-2.rs", +"ui/generic-associated-types/issue-86218.rs", +"ui/generic-associated-types/issue-86483.rs", +"ui/generic-associated-types/issue-86787.rs", +"ui/generic-associated-types/issue-87258_a.rs", +"ui/generic-associated-types/issue-87258_b.rs", +"ui/generic-associated-types/issue-87429-2.rs", +"ui/generic-associated-types/issue-87429-associated-type-default.rs", +"ui/generic-associated-types/issue-87429-specialization.rs", +"ui/generic-associated-types/issue-87429.rs", +"ui/generic-associated-types/issue-87748.rs", +"ui/generic-associated-types/issue-87750.rs", +"ui/generic-associated-types/issue-88287.rs", +"ui/generic-associated-types/issue-88360.rs", +"ui/generic-associated-types/issue-88405.rs", +"ui/generic-associated-types/issue-88459.rs", +"ui/generic-associated-types/issue-88595.rs", +"ui/generic-associated-types/issue-89008.rs", +"ui/generic-associated-types/issue-89352.rs", +"ui/generic-associated-types/issue-90014-tait.rs", +"ui/generic-associated-types/issue-90014-tait2.rs", +"ui/generic-associated-types/issue-90014.rs", +"ui/generic-associated-types/issue-90729.rs", +"ui/generic-associated-types/issue-91139.rs", +"ui/generic-associated-types/issue-91883.rs", +"ui/generic-associated-types/issue-92033.rs", +"ui/generic-associated-types/issue-92096.rs", +"ui/generic-associated-types/issue-92280.rs", +"ui/generic-associated-types/issue-92954.rs", +"ui/generic-associated-types/issue-93141.rs", +"ui/generic-associated-types/issue-93262.rs", +"ui/generic-associated-types/issue-93340.rs", +"ui/generic-associated-types/issue-93341.rs", +"ui/generic-associated-types/issue-93342.rs", +"ui/generic-associated-types/issue-93874.rs", +"ui/generic-associated-types/issue-95305.rs", +"ui/generics/issue-106694.rs", +"ui/generics/issue-1112.rs", +"ui/generics/issue-2936.rs", +"ui/generics/issue-32498.rs", +"ui/generics/issue-333.rs", +"ui/generics/issue-59508-1.rs", +"ui/generics/issue-59508.rs", +"ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs", +"ui/generics/issue-61631-default-type-param-cannot-reference-self.rs", +"ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs", +"ui/generics/issue-79605.rs", +"ui/generics/issue-80512-param-reordering-with-defaults.rs", +"ui/generics/issue-83556.rs", +"ui/generics/issue-94432-garbage-ice.rs", +"ui/generics/issue-94923.rs", +"ui/generics/issue-95208-ignore-qself.rs", +"ui/generics/issue-95208.rs", +"ui/generics/issue-98432.rs", +"ui/higher-ranked/trait-bounds/issue-100689.rs", +"ui/higher-ranked/trait-bounds/issue-102899.rs", +"ui/higher-ranked/trait-bounds/issue-30786.rs", +"ui/higher-ranked/trait-bounds/issue-36139-normalize-closure-sig.rs", +"ui/higher-ranked/trait-bounds/issue-39292.rs", +"ui/higher-ranked/trait-bounds/issue-42114.rs", +"ui/higher-ranked/trait-bounds/issue-43623.rs", +"ui/higher-ranked/trait-bounds/issue-46989.rs", +"ui/higher-ranked/trait-bounds/issue-57639.rs", +"ui/higher-ranked/trait-bounds/issue-58451.rs", +"ui/higher-ranked/trait-bounds/issue-59311.rs", +"ui/higher-ranked/trait-bounds/issue-60283.rs", +"ui/higher-ranked/trait-bounds/issue-62203-hrtb-ice.rs", +"ui/higher-ranked/trait-bounds/issue-88446.rs", +"ui/higher-ranked/trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs", +"ui/higher-ranked/trait-bounds/issue-90177.rs", +"ui/higher-ranked/trait-bounds/issue-95034.rs", +"ui/higher-ranked/trait-bounds/issue-95230.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-44005.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-56556.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-1.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-2.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-3.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-4.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-5.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-62529-6.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-70120.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-71955.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-74261.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-76956.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-80706.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-80956.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-81809.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-85455.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-89118.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-89436.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-90612.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-90638.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-90875.rs", +"ui/higher-ranked/trait-bounds/normalize-under-binder/issue-90950.rs", +"ui/hygiene/issue-15221.rs", +"ui/hygiene/issue-29746.rs", +"ui/hygiene/issue-32922.rs", +"ui/hygiene/issue-40847.rs", +"ui/hygiene/issue-44128.rs", +"ui/hygiene/issue-47311.rs", +"ui/hygiene/issue-47312.rs", +"ui/hygiene/issue-61574-const-parameters.rs", +"ui/hygiene/issue-77523-def-site-async-await.rs", +"ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs", +"ui/impl-trait/in-trait/issue-102140.rs", +"ui/impl-trait/in-trait/issue-102301.rs", +"ui/impl-trait/in-trait/issue-102571.rs", +"ui/impl-trait/issue-100075-2.rs", +"ui/impl-trait/issue-100075.rs", +"ui/impl-trait/issue-100187.rs", +"ui/impl-trait/issue-102605.rs", +"ui/impl-trait/issue-103181-1.rs", +"ui/impl-trait/issue-103181-2.rs", +"ui/impl-trait/issue-103599.rs", +"ui/impl-trait/issue-108591.rs", +"ui/impl-trait/issue-108592.rs", +"ui/impl-trait/issue-35668.rs", +"ui/impl-trait/issue-36792.rs", +"ui/impl-trait/issue-46959.rs", +"ui/impl-trait/issue-49556.rs", +"ui/impl-trait/issue-49579.rs", +"ui/impl-trait/issue-49685.rs", +"ui/impl-trait/issue-51185.rs", +"ui/impl-trait/issue-54966.rs", +"ui/impl-trait/issue-55872-1.rs", +"ui/impl-trait/issue-55872-2.rs", +"ui/impl-trait/issue-55872-3.rs", +"ui/impl-trait/issue-55872.rs", +"ui/impl-trait/issue-56445.rs", +"ui/impl-trait/issue-68532.rs", +"ui/impl-trait/issue-72911.rs", +"ui/impl-trait/issue-86465.rs", +"ui/impl-trait/issue-87450.rs", +"ui/impl-trait/issue-99073-2.rs", +"ui/impl-trait/issue-99073.rs", +"ui/impl-trait/issue-99642-2.rs", +"ui/impl-trait/issue-99642.rs", +"ui/impl-trait/issue-99914.rs", +"ui/impl-trait/issues/issue-104815.rs", +"ui/impl-trait/issues/issue-105826.rs", +"ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs", +"ui/impl-trait/issues/issue-42479.rs", +"ui/impl-trait/issues/issue-49376.rs", +"ui/impl-trait/issues/issue-52128.rs", +"ui/impl-trait/issues/issue-53457.rs", +"ui/impl-trait/issues/issue-54600.rs", +"ui/impl-trait/issues/issue-54840.rs", +"ui/impl-trait/issues/issue-54895.rs", +"ui/impl-trait/issues/issue-55608-captures-empty-region.rs", +"ui/impl-trait/issues/issue-57464-unexpected-regions.rs", +"ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs", +"ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs", +"ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs", +"ui/impl-trait/issues/issue-58504.rs", +"ui/impl-trait/issues/issue-58956.rs", +"ui/impl-trait/issues/issue-62742.rs", +"ui/impl-trait/issues/issue-65581.rs", +"ui/impl-trait/issues/issue-67830.rs", +"ui/impl-trait/issues/issue-70877.rs", +"ui/impl-trait/issues/issue-70971.rs", +"ui/impl-trait/issues/issue-74282.rs", +"ui/impl-trait/issues/issue-77987.rs", +"ui/impl-trait/issues/issue-78722-2.rs", +"ui/impl-trait/issues/issue-78722.rs", +"ui/impl-trait/issues/issue-79099.rs", +"ui/impl-trait/issues/issue-82139.rs", +"ui/impl-trait/issues/issue-83919.rs", +"ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs", +"ui/impl-trait/issues/issue-84073.rs", +"ui/impl-trait/issues/issue-84919.rs", +"ui/impl-trait/issues/issue-86201.rs", +"ui/impl-trait/issues/issue-86642.rs", +"ui/impl-trait/issues/issue-86719.rs", +"ui/impl-trait/issues/issue-86800.rs", +"ui/impl-trait/issues/issue-87295.rs", +"ui/impl-trait/issues/issue-87340.rs", +"ui/impl-trait/issues/issue-88236-2.rs", +"ui/impl-trait/issues/issue-88236.rs", +"ui/impl-trait/issues/issue-89312.rs", +"ui/impl-trait/issues/issue-92305.rs", +"ui/impl-trait/issues/issue-93788.rs", +"ui/impl-trait/issues/issue-99348-impl-compatibility.rs", +"ui/implied-bounds/issue-100690.rs", +"ui/implied-bounds/issue-101951.rs", +"ui/implied-bounds/issue-110161.rs", +"ui/imports/auxiliary/issue-114682-2-extern.rs", +"ui/imports/auxiliary/issue-114682-3-extern.rs", +"ui/imports/auxiliary/issue-114682-4-extern.rs", +"ui/imports/auxiliary/issue-114682-5-extern-1.rs", +"ui/imports/auxiliary/issue-114682-5-extern-2.rs", +"ui/imports/auxiliary/issue-114682-6-extern.rs", +"ui/imports/auxiliary/issue-119369-extern.rs", +"ui/imports/auxiliary/issue-36881-aux.rs", +"ui/imports/auxiliary/issue-52891.rs", +"ui/imports/auxiliary/issue-55811.rs", +"ui/imports/auxiliary/issue-56125.rs", +"ui/imports/auxiliary/issue-59764.rs", +"ui/imports/auxiliary/issue-85992-extern-1.rs", +"ui/imports/auxiliary/issue-85992-extern-2.rs", +"ui/imports/issue-109148.rs", +"ui/imports/issue-109343.rs", +"ui/imports/issue-113953.rs", +"ui/imports/issue-114682-1.rs", +"ui/imports/issue-114682-2.rs", +"ui/imports/issue-114682-3.rs", +"ui/imports/issue-114682-4.rs", +"ui/imports/issue-114682-5.rs", +"ui/imports/issue-114682-6.rs", +"ui/imports/issue-119369.rs", +"ui/imports/issue-13404.rs", +"ui/imports/issue-1697.rs", +"ui/imports/issue-18083.rs", +"ui/imports/issue-19498.rs", +"ui/imports/issue-24081.rs", +"ui/imports/issue-24883.rs", +"ui/imports/issue-25396.rs", +"ui/imports/issue-26873-multifile/issue-26873-multifile.rs", +"ui/imports/issue-26873-multifile/issue-26873-onefile.rs", +"ui/imports/issue-26886.rs", +"ui/imports/issue-26930.rs", +"ui/imports/issue-28134.rs", +"ui/imports/issue-28388-1.rs", +"ui/imports/issue-28388-2.rs", +"ui/imports/issue-2937.rs", +"ui/imports/issue-30560.rs", +"ui/imports/issue-31212.rs", +"ui/imports/issue-32119.rs", +"ui/imports/issue-32222.rs", +"ui/imports/issue-32354-suggest-import-rename.rs", +"ui/imports/issue-32833.rs", +"ui/imports/issue-33464.rs", +"ui/imports/issue-36881.rs", +"ui/imports/issue-37887.rs", +"ui/imports/issue-38293.rs", +"ui/imports/issue-4366-2.rs", +"ui/imports/issue-4366.rs", +"ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs", +"ui/imports/issue-45829/auxiliary/issue-45829-a.rs", +"ui/imports/issue-45829/auxiliary/issue-45829-b.rs", +"ui/imports/issue-45829/issue-45829.rs", +"ui/imports/issue-47623.rs", +"ui/imports/issue-4865-1.rs", +"ui/imports/issue-4865-2.rs", +"ui/imports/issue-4865-3.rs", +"ui/imports/issue-52891.rs", +"ui/imports/issue-53140.rs", +"ui/imports/issue-53269.rs", +"ui/imports/issue-53512.rs", +"ui/imports/issue-53565.rs", +"ui/imports/issue-55457.rs", +"ui/imports/issue-55811.rs", +"ui/imports/issue-55884-1.rs", +"ui/imports/issue-55884-2.rs", +"ui/imports/issue-56125.rs", +"ui/imports/issue-56263.rs", +"ui/imports/issue-57015.rs", +"ui/imports/issue-57539.rs", +"ui/imports/issue-59764.rs", +"ui/imports/issue-62767.rs", +"ui/imports/issue-68103.rs", +"ui/imports/issue-81413.rs", +"ui/imports/issue-8208.rs", +"ui/imports/issue-85992.rs", +"ui/imports/issue-8640.rs", +"ui/imports/issue-99695-b.rs", +"ui/imports/issue-99695.rs", +"ui/inference/issue-103587.rs", +"ui/inference/issue-104649.rs", +"ui/inference/issue-107090.rs", +"ui/inference/issue-113354.rs", +"ui/inference/issue-12028.rs", +"ui/inference/issue-28935.rs", +"ui/inference/issue-36053.rs", +"ui/inference/issue-70082.rs", +"ui/inference/issue-70703.rs", +"ui/inference/issue-71309.rs", +"ui/inference/issue-71584.rs", +"ui/inference/issue-71732.rs", +"ui/inference/issue-72616.rs", +"ui/inference/issue-72690.rs", +"ui/inference/issue-80409.rs", +"ui/inference/issue-80816.rs", +"ui/inference/issue-81522.rs", +"ui/inference/issue-83606.rs", +"ui/inference/issue-86094-suggest-add-return-to-coerce-ret-ty.rs", +"ui/inference/issue-86162-1.rs", +"ui/inference/issue-86162-2.rs", +"ui/inference/need_type_info/issue-103053.rs", +"ui/inference/need_type_info/issue-107745-avoid-expr-from-macro-expansion.rs", +"ui/inference/need_type_info/issue-109905.rs", +"ui/inference/need_type_info/issue-113264-incorrect-impl-trait-in-path-suggestion.rs", +"ui/infinite/issue-41731-infinite-macro-print.rs", +"ui/infinite/issue-41731-infinite-macro-println.rs", +"ui/intrinsics/issue-28575.rs", +"ui/intrinsics/issue-84297-reifying-copy.rs", +"ui/invalid/issue-114435-layout-type-err.rs", +"ui/issue-11881.rs", +"ui/issue-13560.rs", +"ui/issue-15924.rs", +"ui/issue-16822.rs", +"ui/issue-18502.rs", +"ui/issue-24106.rs", +"ui/issue-76387-llvm-miscompile.rs", +"ui/issues-71798.rs", +"ui/issues/auxiliary/issue-111011.rs", +"ui/issues/auxiliary/issue-11224.rs", +"ui/issues/auxiliary/issue-11508.rs", +"ui/issues/auxiliary/issue-11529.rs", +"ui/issues/auxiliary/issue-11680.rs", +"ui/issues/auxiliary/issue-12133-dylib.rs", +"ui/issues/auxiliary/issue-12133-dylib2.rs", +"ui/issues/auxiliary/issue-12133-rlib.rs", +"ui/issues/auxiliary/issue-12612-1.rs", +"ui/issues/auxiliary/issue-12612-2.rs", +"ui/issues/auxiliary/issue-12660-aux.rs", +"ui/issues/auxiliary/issue-13507.rs", +"ui/issues/auxiliary/issue-13620-1.rs", +"ui/issues/auxiliary/issue-13620-2.rs", +"ui/issues/auxiliary/issue-13872-1.rs", +"ui/issues/auxiliary/issue-13872-2.rs", +"ui/issues/auxiliary/issue-13872-3.rs", +"ui/issues/auxiliary/issue-14344-1.rs", +"ui/issues/auxiliary/issue-14344-2.rs", +"ui/issues/auxiliary/issue-14421.rs", +"ui/issues/auxiliary/issue-14422.rs", +"ui/issues/auxiliary/issue-15562.rs", +"ui/issues/auxiliary/issue-16643.rs", +"ui/issues/auxiliary/issue-16725.rs", +"ui/issues/auxiliary/issue-17662.rs", +"ui/issues/auxiliary/issue-18501.rs", +"ui/issues/auxiliary/issue-18514.rs", +"ui/issues/auxiliary/issue-18711.rs", +"ui/issues/auxiliary/issue-18913-1.rs", +"ui/issues/auxiliary/issue-18913-2.rs", +"ui/issues/auxiliary/issue-19293.rs", +"ui/issues/auxiliary/issue-19340-1.rs", +"ui/issues/auxiliary/issue-20389.rs", +"ui/issues/auxiliary/issue-21202.rs", +"ui/issues/auxiliary/issue-2170-lib.rs", +"ui/issues/auxiliary/issue-2316-a.rs", +"ui/issues/auxiliary/issue-2316-b.rs", +"ui/issues/auxiliary/issue-2380.rs", +"ui/issues/auxiliary/issue-2414-a.rs", +"ui/issues/auxiliary/issue-2414-b.rs", +"ui/issues/auxiliary/issue-2472-b.rs", +"ui/issues/auxiliary/issue-25185-1.rs", +"ui/issues/auxiliary/issue-25185-2.rs", +"ui/issues/auxiliary/issue-2526.rs", +"ui/issues/auxiliary/issue-25467.rs", +"ui/issues/auxiliary/issue-2631-a.rs", +"ui/issues/auxiliary/issue-2723-a.rs", +"ui/issues/auxiliary/issue-29265.rs", +"ui/issues/auxiliary/issue-29485.rs", +"ui/issues/auxiliary/issue-3012-1.rs", +"ui/issues/auxiliary/issue-30123-aux.rs", +"ui/issues/auxiliary/issue-3136-a.rs", +"ui/issues/auxiliary/issue-31702-1.rs", +"ui/issues/auxiliary/issue-31702-2.rs", +"ui/issues/auxiliary/issue-34796-aux.rs", +"ui/issues/auxiliary/issue-36954.rs", +"ui/issues/auxiliary/issue-38190.rs", +"ui/issues/auxiliary/issue-38226-aux.rs", +"ui/issues/auxiliary/issue-3979-traits.rs", +"ui/issues/auxiliary/issue-41053.rs", +"ui/issues/auxiliary/issue-41549.rs", +"ui/issues/auxiliary/issue-42007-s.rs", +"ui/issues/auxiliary/issue-4208-cc.rs", +"ui/issues/auxiliary/issue-4545.rs", +"ui/issues/auxiliary/issue-48984-aux.rs", +"ui/issues/auxiliary/issue-49544.rs", +"ui/issues/auxiliary/issue-51798.rs", +"ui/issues/auxiliary/issue-52489.rs", +"ui/issues/auxiliary/issue-5518.rs", +"ui/issues/auxiliary/issue-5521.rs", +"ui/issues/auxiliary/issue-56943.rs", +"ui/issues/auxiliary/issue-57271-lib.rs", +"ui/issues/auxiliary/issue-5844-aux.rs", +"ui/issues/auxiliary/issue-7178.rs", +"ui/issues/auxiliary/issue-73112.rs", +"ui/issues/auxiliary/issue-7899.rs", +"ui/issues/auxiliary/issue-8044.rs", +"ui/issues/auxiliary/issue-8259.rs", +"ui/issues/auxiliary/issue-8401.rs", +"ui/issues/auxiliary/issue-9123.rs", +"ui/issues/auxiliary/issue-9155.rs", +"ui/issues/auxiliary/issue-9188.rs", +"ui/issues/auxiliary/issue-9906.rs", +"ui/issues/auxiliary/issue-9968.rs", +"ui/issues/issue-10228.rs", +"ui/issues/issue-10291.rs", +"ui/issues/issue-102964.rs", +"ui/issues/issue-10396.rs", +"ui/issues/issue-10412.rs", +"ui/issues/issue-10436.rs", +"ui/issues/issue-10456.rs", +"ui/issues/issue-10465.rs", +"ui/issues/issue-10545.rs", +"ui/issues/issue-10638.rs", +"ui/issues/issue-10656.rs", +"ui/issues/issue-106755.rs", +"ui/issues/issue-10683.rs", +"ui/issues/issue-10718.rs", +"ui/issues/issue-10734.rs", +"ui/issues/issue-10764.rs", +"ui/issues/issue-10767.rs", +"ui/issues/issue-10802.rs", +"ui/issues/issue-10806.rs", +"ui/issues/issue-10853.rs", +"ui/issues/issue-10877.rs", +"ui/issues/issue-10902.rs", +"ui/issues/issue-11004.rs", +"ui/issues/issue-11047.rs", +"ui/issues/issue-11085.rs", +"ui/issues/issue-11192.rs", +"ui/issues/issue-11205.rs", +"ui/issues/issue-11224.rs", +"ui/issues/issue-11267.rs", +"ui/issues/issue-11374.rs", +"ui/issues/issue-11382.rs", +"ui/issues/issue-11384.rs", +"ui/issues/issue-11508.rs", +"ui/issues/issue-11529.rs", +"ui/issues/issue-11552.rs", +"ui/issues/issue-11592.rs", +"ui/issues/issue-11677.rs", +"ui/issues/issue-11680.rs", +"ui/issues/issue-11681.rs", +"ui/issues/issue-11692-1.rs", +"ui/issues/issue-11692-2.rs", +"ui/issues/issue-11709.rs", +"ui/issues/issue-11740.rs", +"ui/issues/issue-11771.rs", +"ui/issues/issue-11820.rs", +"ui/issues/issue-11844.rs", +"ui/issues/issue-11869.rs", +"ui/issues/issue-11958.rs", +"ui/issues/issue-12033.rs", +"ui/issues/issue-12041.rs", +"ui/issues/issue-12127.rs", +"ui/issues/issue-12133-1.rs", +"ui/issues/issue-12133-2.rs", +"ui/issues/issue-12133-3.rs", +"ui/issues/issue-12187-1.rs", +"ui/issues/issue-12187-2.rs", +"ui/issues/issue-12285.rs", +"ui/issues/issue-12567.rs", +"ui/issues/issue-12612.rs", +"ui/issues/issue-12660.rs", +"ui/issues/issue-12677.rs", +"ui/issues/issue-12699.rs", +"ui/issues/issue-12729.rs", +"ui/issues/issue-12744.rs", +"ui/issues/issue-12860.rs", +"ui/issues/issue-12863.rs", +"ui/issues/issue-12909.rs", +"ui/issues/issue-12920.rs", +"ui/issues/issue-13027.rs", +"ui/issues/issue-13058.rs", +"ui/issues/issue-13105.rs", +"ui/issues/issue-13167.rs", +"ui/issues/issue-13202.rs", +"ui/issues/issue-13204.rs", +"ui/issues/issue-13214.rs", +"ui/issues/issue-13259-windows-tcb-trash.rs", +"ui/issues/issue-13264.rs", +"ui/issues/issue-13323.rs", +"ui/issues/issue-13359.rs", +"ui/issues/issue-13405.rs", +"ui/issues/issue-13407.rs", +"ui/issues/issue-13434.rs", +"ui/issues/issue-13446.rs", +"ui/issues/issue-13466.rs", +"ui/issues/issue-13482-2.rs", +"ui/issues/issue-13482.rs", +"ui/issues/issue-13497-2.rs", +"ui/issues/issue-13497.rs", +"ui/issues/issue-13507-2.rs", +"ui/issues/issue-1362.rs", +"ui/issues/issue-13620.rs", +"ui/issues/issue-13665.rs", +"ui/issues/issue-13703.rs", +"ui/issues/issue-13763.rs", +"ui/issues/issue-13775.rs", +"ui/issues/issue-13808.rs", +"ui/issues/issue-13847.rs", +"ui/issues/issue-13867.rs", +"ui/issues/issue-13872.rs", +"ui/issues/issue-14082.rs", +"ui/issues/issue-14091-2.rs", +"ui/issues/issue-14091.rs", +"ui/issues/issue-14092.rs", +"ui/issues/issue-14229.rs", +"ui/issues/issue-14254.rs", +"ui/issues/issue-14285.rs", +"ui/issues/issue-14308.rs", +"ui/issues/issue-14330.rs", +"ui/issues/issue-14344.rs", +"ui/issues/issue-14366.rs", +"ui/issues/issue-14382.rs", +"ui/issues/issue-14393.rs", +"ui/issues/issue-14399.rs", +"ui/issues/issue-14421.rs", +"ui/issues/issue-14422.rs", +"ui/issues/issue-1448-2.rs", +"ui/issues/issue-1451.rs", +"ui/issues/issue-14541.rs", +"ui/issues/issue-1460.rs", +"ui/issues/issue-14721.rs", +"ui/issues/issue-1476.rs", +"ui/issues/issue-14821.rs", +"ui/issues/issue-14845.rs", +"ui/issues/issue-14853.rs", +"ui/issues/issue-14865.rs", +"ui/issues/issue-14875.rs", +"ui/issues/issue-14901.rs", +"ui/issues/issue-14915.rs", +"ui/issues/issue-14919.rs", +"ui/issues/issue-14959.rs", +"ui/issues/issue-15034.rs", +"ui/issues/issue-15043.rs", +"ui/issues/issue-15063.rs", +"ui/issues/issue-15094.rs", +"ui/issues/issue-15104.rs", +"ui/issues/issue-15129-rpass.rs", +"ui/issues/issue-15155.rs", +"ui/issues/issue-15167.rs", +"ui/issues/issue-15189.rs", +"ui/issues/issue-15207.rs", +"ui/issues/issue-15260.rs", +"ui/issues/issue-15381.rs", +"ui/issues/issue-15444.rs", +"ui/issues/issue-15523-big.rs", +"ui/issues/issue-15523.rs", +"ui/issues/issue-15562.rs", +"ui/issues/issue-15571.rs", +"ui/issues/issue-15673.rs", +"ui/issues/issue-15734.rs", +"ui/issues/issue-15735.rs", +"ui/issues/issue-15756.rs", +"ui/issues/issue-15763.rs", +"ui/issues/issue-15774.rs", +"ui/issues/issue-15783.rs", +"ui/issues/issue-15793.rs", +"ui/issues/issue-15858.rs", +"ui/issues/issue-15896.rs", +"ui/issues/issue-15965.rs", +"ui/issues/issue-16048.rs", +"ui/issues/issue-16149.rs", +"ui/issues/issue-16151.rs", +"ui/issues/issue-16256.rs", +"ui/issues/issue-16278.rs", +"ui/issues/issue-16401.rs", +"ui/issues/issue-16441.rs", +"ui/issues/issue-16452.rs", +"ui/issues/issue-16492.rs", +"ui/issues/issue-16530.rs", +"ui/issues/issue-16560.rs", +"ui/issues/issue-16562.rs", +"ui/issues/issue-16596.rs", +"ui/issues/issue-1660.rs", +"ui/issues/issue-16643.rs", +"ui/issues/issue-16648.rs", +"ui/issues/issue-16668.rs", +"ui/issues/issue-16671.rs", +"ui/issues/issue-16683.rs", +"ui/issues/issue-16725.rs", +"ui/issues/issue-16739.rs", +"ui/issues/issue-16745.rs", +"ui/issues/issue-16774.rs", +"ui/issues/issue-16783.rs", +"ui/issues/issue-16819.rs", +"ui/issues/issue-16922-rpass.rs", +"ui/issues/issue-16939.rs", +"ui/issues/issue-1696.rs", +"ui/issues/issue-16966.rs", +"ui/issues/issue-16994.rs", +"ui/issues/issue-17001.rs", +"ui/issues/issue-17033.rs", +"ui/issues/issue-17068.rs", +"ui/issues/issue-17121.rs", +"ui/issues/issue-17216.rs", +"ui/issues/issue-17252.rs", +"ui/issues/issue-17302.rs", +"ui/issues/issue-17322.rs", +"ui/issues/issue-17336.rs", +"ui/issues/issue-17337.rs", +"ui/issues/issue-17351.rs", +"ui/issues/issue-17361.rs", +"ui/issues/issue-17373.rs", +"ui/issues/issue-17385.rs", +"ui/issues/issue-17405.rs", +"ui/issues/issue-17441.rs", +"ui/issues/issue-17450.rs", +"ui/issues/issue-17503.rs", +"ui/issues/issue-17546.rs", +"ui/issues/issue-17551.rs", +"ui/issues/issue-17651.rs", +"ui/issues/issue-17662.rs", +"ui/issues/issue-17732.rs", +"ui/issues/issue-17734.rs", +"ui/issues/issue-17740.rs", +"ui/issues/issue-17746.rs", +"ui/issues/issue-17758.rs", +"ui/issues/issue-17771.rs", +"ui/issues/issue-17800.rs", +"ui/issues/issue-17816.rs", +"ui/issues/issue-17877.rs", +"ui/issues/issue-17897.rs", +"ui/issues/issue-17904-2.rs", +"ui/issues/issue-17904.rs", +"ui/issues/issue-17905-2.rs", +"ui/issues/issue-17905.rs", +"ui/issues/issue-17933.rs", +"ui/issues/issue-17954.rs", +"ui/issues/issue-17959.rs", +"ui/issues/issue-17994.rs", +"ui/issues/issue-17999.rs", +"ui/issues/issue-18058.rs", +"ui/issues/issue-18088.rs", +"ui/issues/issue-18107.rs", +"ui/issues/issue-18110.rs", +"ui/issues/issue-18119.rs", +"ui/issues/issue-18159.rs", +"ui/issues/issue-18173.rs", +"ui/issues/issue-18183.rs", +"ui/issues/issue-18188.rs", +"ui/issues/issue-18232.rs", +"ui/issues/issue-18352.rs", +"ui/issues/issue-18353.rs", +"ui/issues/issue-18389.rs", +"ui/issues/issue-18423.rs", +"ui/issues/issue-18446-2.rs", +"ui/issues/issue-18446.rs", +"ui/issues/issue-18464.rs", +"ui/issues/issue-18501.rs", +"ui/issues/issue-18514.rs", +"ui/issues/issue-18532.rs", +"ui/issues/issue-18539.rs", +"ui/issues/issue-18566.rs", +"ui/issues/issue-18611.rs", +"ui/issues/issue-18685.rs", +"ui/issues/issue-18711.rs", +"ui/issues/issue-18738.rs", +"ui/issues/issue-18767.rs", +"ui/issues/issue-18783.rs", +"ui/issues/issue-18809.rs", +"ui/issues/issue-18845.rs", +"ui/issues/issue-18859.rs", +"ui/issues/issue-18906.rs", +"ui/issues/issue-18913.rs", +"ui/issues/issue-18919.rs", +"ui/issues/issue-18952.rs", +"ui/issues/issue-18959.rs", +"ui/issues/issue-18988.rs", +"ui/issues/issue-1900.rs", +"ui/issues/issue-19001.rs", +"ui/issues/issue-19037.rs", +"ui/issues/issue-19086.rs", +"ui/issues/issue-19097.rs", +"ui/issues/issue-19098.rs", +"ui/issues/issue-19100.rs", +"ui/issues/issue-19127.rs", +"ui/issues/issue-19129-1.rs", +"ui/issues/issue-19129-2.rs", +"ui/issues/issue-19135.rs", +"ui/issues/issue-1920-absolute-paths/auxiliary/issue-1920.rs", +"ui/issues/issue-1920-absolute-paths/issue-1920-1.rs", +"ui/issues/issue-1920-absolute-paths/issue-1920-2.rs", +"ui/issues/issue-1920-absolute-paths/issue-1920-3.rs", +"ui/issues/issue-19244-1.rs", +"ui/issues/issue-19244-2.rs", +"ui/issues/issue-19293.rs", +"ui/issues/issue-19340-1.rs", +"ui/issues/issue-19340-2.rs", +"ui/issues/issue-19367.rs", +"ui/issues/issue-19380.rs", +"ui/issues/issue-19398.rs", +"ui/issues/issue-19404.rs", +"ui/issues/issue-19479.rs", +"ui/issues/issue-19482.rs", +"ui/issues/issue-19499.rs", +"ui/issues/issue-19521.rs", +"ui/issues/issue-19601.rs", +"ui/issues/issue-1962.rs", +"ui/issues/issue-19631.rs", +"ui/issues/issue-19632.rs", +"ui/issues/issue-19692.rs", +"ui/issues/issue-19734.rs", +"ui/issues/issue-1974.rs", +"ui/issues/issue-19811-escape-unicode.rs", +"ui/issues/issue-19850.rs", +"ui/issues/issue-19922.rs", +"ui/issues/issue-19982.rs", +"ui/issues/issue-19991.rs", +"ui/issues/issue-20009.rs", +"ui/issues/issue-20055-box-trait.rs", +"ui/issues/issue-20055-box-unsized-array.rs", +"ui/issues/issue-20162.rs", +"ui/issues/issue-20174.rs", +"ui/issues/issue-20186.rs", +"ui/issues/issue-20225.rs", +"ui/issues/issue-20261.rs", +"ui/issues/issue-20313-rpass.rs", +"ui/issues/issue-20313.rs", +"ui/issues/issue-20389.rs", +"ui/issues/issue-20396.rs", +"ui/issues/issue-20413.rs", +"ui/issues/issue-20414.rs", +"ui/issues/issue-20427.rs", +"ui/issues/issue-20433.rs", +"ui/issues/issue-20454.rs", +"ui/issues/issue-20544.rs", +"ui/issues/issue-20575.rs", +"ui/issues/issue-20644.rs", +"ui/issues/issue-20676.rs", +"ui/issues/issue-20714.rs", +"ui/issues/issue-2074.rs", +"ui/issues/issue-20763-1.rs", +"ui/issues/issue-20763-2.rs", +"ui/issues/issue-20772.rs", +"ui/issues/issue-20797.rs", +"ui/issues/issue-20803.rs", +"ui/issues/issue-20831-debruijn.rs", +"ui/issues/issue-20847.rs", +"ui/issues/issue-20939.rs", +"ui/issues/issue-20953.rs", +"ui/issues/issue-20971.rs", +"ui/issues/issue-21033.rs", +"ui/issues/issue-21140.rs", +"ui/issues/issue-21160.rs", +"ui/issues/issue-21174-2.rs", +"ui/issues/issue-21174.rs", +"ui/issues/issue-21177.rs", +"ui/issues/issue-21202.rs", +"ui/issues/issue-21245.rs", +"ui/issues/issue-21291.rs", +"ui/issues/issue-21306.rs", +"ui/issues/issue-21332.rs", +"ui/issues/issue-21361.rs", +"ui/issues/issue-21384.rs", +"ui/issues/issue-21400.rs", +"ui/issues/issue-21402.rs", +"ui/issues/issue-21449.rs", +"ui/issues/issue-2150.rs", +"ui/issues/issue-2151.rs", +"ui/issues/issue-21546.rs", +"ui/issues/issue-21554.rs", +"ui/issues/issue-21596.rs", +"ui/issues/issue-21600.rs", +"ui/issues/issue-21622.rs", +"ui/issues/issue-21634.rs", +"ui/issues/issue-21655.rs", +"ui/issues/issue-2170-exe.rs", +"ui/issues/issue-21701.rs", +"ui/issues/issue-21763.rs", +"ui/issues/issue-21837.rs", +"ui/issues/issue-21891.rs", +"ui/issues/issue-2190-1.rs", +"ui/issues/issue-21909.rs", +"ui/issues/issue-21922.rs", +"ui/issues/issue-21946.rs", +"ui/issues/issue-21950.rs", +"ui/issues/issue-21974.rs", +"ui/issues/issue-22008.rs", +"ui/issues/issue-22034.rs", +"ui/issues/issue-22036.rs", +"ui/issues/issue-2214.rs", +"ui/issues/issue-22258.rs", +"ui/issues/issue-22289.rs", +"ui/issues/issue-22312.rs", +"ui/issues/issue-22346.rs", +"ui/issues/issue-22356.rs", +"ui/issues/issue-22370.rs", +"ui/issues/issue-22403.rs", +"ui/issues/issue-22426.rs", +"ui/issues/issue-22434.rs", +"ui/issues/issue-22468.rs", +"ui/issues/issue-22471.rs", +"ui/issues/issue-22577.rs", +"ui/issues/issue-22599.rs", +"ui/issues/issue-22603.rs", +"ui/issues/issue-22629.rs", +"ui/issues/issue-22638.rs", +"ui/issues/issue-22644.rs", +"ui/issues/issue-22673.rs", +"ui/issues/issue-22684.rs", +"ui/issues/issue-22706.rs", +"ui/issues/issue-22777.rs", +"ui/issues/issue-22781.rs", +"ui/issues/issue-22789.rs", +"ui/issues/issue-2281-part1.rs", +"ui/issues/issue-22814.rs", +"ui/issues/issue-2284.rs", +"ui/issues/issue-22864-1.rs", +"ui/issues/issue-22864-2.rs", +"ui/issues/issue-22872.rs", +"ui/issues/issue-22874.rs", +"ui/issues/issue-2288.rs", +"ui/issues/issue-22886.rs", +"ui/issues/issue-22894.rs", +"ui/issues/issue-22933-1.rs", +"ui/issues/issue-22933-2.rs", +"ui/issues/issue-22992-2.rs", +"ui/issues/issue-22992.rs", +"ui/issues/issue-23024.rs", +"ui/issues/issue-23036.rs", +"ui/issues/issue-23041.rs", +"ui/issues/issue-23046.rs", +"ui/issues/issue-23073.rs", +"ui/issues/issue-2311-2.rs", +"ui/issues/issue-2311.rs", +"ui/issues/issue-2312.rs", +"ui/issues/issue-23122-1.rs", +"ui/issues/issue-23122-2.rs", +"ui/issues/issue-2316-c.rs", +"ui/issues/issue-23173.rs", +"ui/issues/issue-23189.rs", +"ui/issues/issue-23217.rs", +"ui/issues/issue-23253.rs", +"ui/issues/issue-23261.rs", +"ui/issues/issue-23281.rs", +"ui/issues/issue-23302-enum-infinite-recursion/issue-23302-1.rs", +"ui/issues/issue-23302-enum-infinite-recursion/issue-23302-2.rs", +"ui/issues/issue-23302-enum-infinite-recursion/issue-23302-3.rs", +"ui/issues/issue-23304-1.rs", +"ui/issues/issue-23304-2.rs", +"ui/issues/issue-23311.rs", +"ui/issues/issue-23336.rs", +"ui/issues/issue-23354-2.rs", +"ui/issues/issue-23354.rs", +"ui/issues/issue-23406.rs", +"ui/issues/issue-23433.rs", +"ui/issues/issue-23442.rs", +"ui/issues/issue-23477.rs", +"ui/issues/issue-23485.rs", +"ui/issues/issue-23491.rs", +"ui/issues/issue-23543.rs", +"ui/issues/issue-23544.rs", +"ui/issues/issue-23550.rs", +"ui/issues/issue-23589.rs", +"ui/issues/issue-23611-enum-swap-in-drop.rs", +"ui/issues/issue-23649-1.rs", +"ui/issues/issue-23649-2.rs", +"ui/issues/issue-23649-3.rs", +"ui/issues/issue-23699.rs", +"ui/issues/issue-2380-b.rs", +"ui/issues/issue-23808.rs", +"ui/issues/issue-2383.rs", +"ui/issues/issue-23891.rs", +"ui/issues/issue-23898.rs", +"ui/issues/issue-23958.rs", +"ui/issues/issue-23966.rs", +"ui/issues/issue-23992.rs", +"ui/issues/issue-24013.rs", +"ui/issues/issue-24036.rs", +"ui/issues/issue-24086.rs", +"ui/issues/issue-2414-c.rs", +"ui/issues/issue-24161.rs", +"ui/issues/issue-24227.rs", +"ui/issues/issue-2428.rs", +"ui/issues/issue-24308.rs", +"ui/issues/issue-24322.rs", +"ui/issues/issue-24352.rs", +"ui/issues/issue-24353.rs", +"ui/issues/issue-24357.rs", +"ui/issues/issue-24363.rs", +"ui/issues/issue-24365.rs", +"ui/issues/issue-24389.rs", +"ui/issues/issue-24424.rs", +"ui/issues/issue-24434.rs", +"ui/issues/issue-24446.rs", +"ui/issues/issue-2445-b.rs", +"ui/issues/issue-2445.rs", +"ui/issues/issue-24533.rs", +"ui/issues/issue-24589.rs", +"ui/issues/issue-2463.rs", +"ui/issues/issue-24682.rs", +"ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs", +"ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs", +"ui/issues/issue-2470-bounds-check-overflow.rs", +"ui/issues/issue-2472.rs", +"ui/issues/issue-24779.rs", +"ui/issues/issue-24819.rs", +"ui/issues/issue-2487-a.rs", +"ui/issues/issue-24945-repeat-dash-opts.rs", +"ui/issues/issue-24947.rs", +"ui/issues/issue-24954.rs", +"ui/issues/issue-2502.rs", +"ui/issues/issue-25076.rs", +"ui/issues/issue-25089.rs", +"ui/issues/issue-25145.rs", +"ui/issues/issue-25180.rs", +"ui/issues/issue-25185.rs", +"ui/issues/issue-2526-a.rs", +"ui/issues/issue-25279.rs", +"ui/issues/issue-25343.rs", +"ui/issues/issue-25368.rs", +"ui/issues/issue-25386.rs", +"ui/issues/issue-25394.rs", +"ui/issues/issue-25467.rs", +"ui/issues/issue-25497.rs", +"ui/issues/issue-2550.rs", +"ui/issues/issue-25515.rs", +"ui/issues/issue-25549-multiple-drop.rs", +"ui/issues/issue-25579.rs", +"ui/issues/issue-25679.rs", +"ui/issues/issue-25693.rs", +"ui/issues/issue-25746-bool-transmute.rs", +"ui/issues/issue-25757.rs", +"ui/issues/issue-25810.rs", +"ui/issues/issue-2590.rs", +"ui/issues/issue-25901.rs", +"ui/issues/issue-26056.rs", +"ui/issues/issue-26093.rs", +"ui/issues/issue-26095.rs", +"ui/issues/issue-2611-3.rs", +"ui/issues/issue-26127.rs", +"ui/issues/issue-26186.rs", +"ui/issues/issue-26205.rs", +"ui/issues/issue-26217.rs", +"ui/issues/issue-26237.rs", +"ui/issues/issue-26262.rs", +"ui/issues/issue-2631-b.rs", +"ui/issues/issue-2642.rs", +"ui/issues/issue-26468.rs", +"ui/issues/issue-26472.rs", +"ui/issues/issue-26484.rs", +"ui/issues/issue-26614.rs", +"ui/issues/issue-26619.rs", +"ui/issues/issue-26641.rs", +"ui/issues/issue-26646.rs", +"ui/issues/issue-26655.rs", +"ui/issues/issue-26709.rs", +"ui/issues/issue-26802.rs", +"ui/issues/issue-26805.rs", +"ui/issues/issue-26812.rs", +"ui/issues/issue-26948.rs", +"ui/issues/issue-26997.rs", +"ui/issues/issue-27008.rs", +"ui/issues/issue-27033.rs", +"ui/issues/issue-27042.rs", +"ui/issues/issue-27054-primitive-binary-ops.rs", +"ui/issues/issue-27078.rs", +"ui/issues/issue-2708.rs", +"ui/issues/issue-27105.rs", +"ui/issues/issue-2723-b.rs", +"ui/issues/issue-27240.rs", +"ui/issues/issue-27268.rs", +"ui/issues/issue-27281.rs", +"ui/issues/issue-27340.rs", +"ui/issues/issue-27401-dropflag-reinit.rs", +"ui/issues/issue-27433.rs", +"ui/issues/issue-27592.rs", +"ui/issues/issue-2761.rs", +"ui/issues/issue-27639.rs", +"ui/issues/issue-27697.rs", +"ui/issues/issue-27815.rs", +"ui/issues/issue-27842.rs", +"ui/issues/issue-27859.rs", +"ui/issues/issue-27889.rs", +"ui/issues/issue-27942.rs", +"ui/issues/issue-27949.rs", +"ui/issues/issue-27997.rs", +"ui/issues/issue-28105.rs", +"ui/issues/issue-28109.rs", +"ui/issues/issue-28181.rs", +"ui/issues/issue-2823.rs", +"ui/issues/issue-28279.rs", +"ui/issues/issue-28344.rs", +"ui/issues/issue-28433.rs", +"ui/issues/issue-28472.rs", +"ui/issues/issue-2848.rs", +"ui/issues/issue-2849.rs", +"ui/issues/issue-28498-must-work-ex1.rs", +"ui/issues/issue-28498-must-work-ex2.rs", +"ui/issues/issue-28498-ugeh-ex1.rs", +"ui/issues/issue-28550.rs", +"ui/issues/issue-28561.rs", +"ui/issues/issue-28568.rs", +"ui/issues/issue-28586.rs", +"ui/issues/issue-28600.rs", +"ui/issues/issue-28625.rs", +"ui/issues/issue-28776.rs", +"ui/issues/issue-28777.rs", +"ui/issues/issue-28828.rs", +"ui/issues/issue-28839.rs", +"ui/issues/issue-28936.rs", +"ui/issues/issue-2895.rs", +"ui/issues/issue-28971.rs", +"ui/issues/issue-28983.rs", +"ui/issues/issue-28999.rs", +"ui/issues/issue-29030.rs", +"ui/issues/issue-29037.rs", +"ui/issues/issue-2904.rs", +"ui/issues/issue-29048.rs", +"ui/issues/issue-29053.rs", +"ui/issues/issue-29071-2.rs", +"ui/issues/issue-29071.rs", +"ui/issues/issue-29092.rs", +"ui/issues/issue-29147-rpass.rs", +"ui/issues/issue-29147.rs", +"ui/issues/issue-29265.rs", +"ui/issues/issue-29276.rs", +"ui/issues/issue-2935.rs", +"ui/issues/issue-29466.rs", +"ui/issues/issue-29485.rs", +"ui/issues/issue-2951.rs", +"ui/issues/issue-29516.rs", +"ui/issues/issue-29522.rs", +"ui/issues/issue-29540.rs", +"ui/issues/issue-29663.rs", +"ui/issues/issue-29668.rs", +"ui/issues/issue-29710.rs", +"ui/issues/issue-29723.rs", +"ui/issues/issue-29740.rs", +"ui/issues/issue-29743.rs", +"ui/issues/issue-29821.rs", +"ui/issues/issue-29857.rs", +"ui/issues/issue-29861.rs", +"ui/issues/issue-2989.rs", +"ui/issues/issue-29948.rs", +"ui/issues/issue-2995.rs", +"ui/issues/issue-30007.rs", +"ui/issues/issue-30018-panic.rs", +"ui/issues/issue-30081.rs", +"ui/issues/issue-3012-2.rs", +"ui/issues/issue-30123.rs", +"ui/issues/issue-3021-b.rs", +"ui/issues/issue-3021-d.rs", +"ui/issues/issue-30236.rs", +"ui/issues/issue-30255.rs", +"ui/issues/issue-3026.rs", +"ui/issues/issue-3029.rs", +"ui/issues/issue-3037.rs", +"ui/issues/issue-30371.rs", +"ui/issues/issue-3038.rs", +"ui/issues/issue-30380.rs", +"ui/issues/issue-30490.rs", +"ui/issues/issue-3052.rs", +"ui/issues/issue-30530.rs", +"ui/issues/issue-30589.rs", +"ui/issues/issue-30615.rs", +"ui/issues/issue-30756.rs", +"ui/issues/issue-30891.rs", +"ui/issues/issue-3091.rs", +"ui/issues/issue-31011.rs", +"ui/issues/issue-3109.rs", +"ui/issues/issue-3121.rs", +"ui/issues/issue-31260.rs", +"ui/issues/issue-31267-additional.rs", +"ui/issues/issue-31267.rs", +"ui/issues/issue-31299.rs", +"ui/issues/issue-3136-b.rs", +"ui/issues/issue-3149.rs", +"ui/issues/issue-31511.rs", +"ui/issues/issue-3154.rs", +"ui/issues/issue-31702.rs", +"ui/issues/issue-31769.rs", +"ui/issues/issue-31776.rs", +"ui/issues/issue-31910.rs", +"ui/issues/issue-32004.rs", +"ui/issues/issue-32008.rs", +"ui/issues/issue-32086.rs", +"ui/issues/issue-32122-deref-coercions-composition/issue-32122-1.rs", +"ui/issues/issue-32122-deref-coercions-composition/issue-32122-2.rs", +"ui/issues/issue-3214.rs", +"ui/issues/issue-3220.rs", +"ui/issues/issue-32292.rs", +"ui/issues/issue-32324.rs", +"ui/issues/issue-32326.rs", +"ui/issues/issue-32377.rs", +"ui/issues/issue-32389.rs", +"ui/issues/issue-32518.rs", +"ui/issues/issue-32655.rs", +"ui/issues/issue-32782.rs", +"ui/issues/issue-32797.rs", +"ui/issues/issue-32805.rs", +"ui/issues/issue-3290.rs", +"ui/issues/issue-32950.rs", +"ui/issues/issue-32995-2.rs", +"ui/issues/issue-32995.rs", +"ui/issues/issue-33187.rs", +"ui/issues/issue-33202.rs", +"ui/issues/issue-33241.rs", +"ui/issues/issue-33287.rs", +"ui/issues/issue-33293.rs", +"ui/issues/issue-33387.rs", +"ui/issues/issue-3344.rs", +"ui/issues/issue-33461.rs", +"ui/issues/issue-33504.rs", +"ui/issues/issue-33525.rs", +"ui/issues/issue-33571.rs", +"ui/issues/issue-33687.rs", +"ui/issues/issue-33770.rs", +"ui/issues/issue-3389.rs", +"ui/issues/issue-33941.rs", +"ui/issues/issue-33992.rs", +"ui/issues/issue-34047.rs", +"ui/issues/issue-34074.rs", +"ui/issues/issue-34209.rs", +"ui/issues/issue-34229.rs", +"ui/issues/issue-3424.rs", +"ui/issues/issue-3429.rs", +"ui/issues/issue-34334.rs", +"ui/issues/issue-34349.rs", +"ui/issues/issue-34373.rs", +"ui/issues/issue-34418.rs", +"ui/issues/issue-34427.rs", +"ui/issues/issue-3447.rs", +"ui/issues/issue-34503.rs", +"ui/issues/issue-34569.rs", +"ui/issues/issue-34571.rs", +"ui/issues/issue-34751.rs", +"ui/issues/issue-3477.rs", +"ui/issues/issue-34780.rs", +"ui/issues/issue-34796.rs", +"ui/issues/issue-34839.rs", +"ui/issues/issue-3500.rs", +"ui/issues/issue-35139.rs", +"ui/issues/issue-3521-2.rs", +"ui/issues/issue-35241.rs", +"ui/issues/issue-35423.rs", +"ui/issues/issue-3556.rs", +"ui/issues/issue-35570.rs", +"ui/issues/issue-3559.rs", +"ui/issues/issue-35600.rs", +"ui/issues/issue-3563-3.rs", +"ui/issues/issue-3574.rs", +"ui/issues/issue-35815.rs", +"ui/issues/issue-35976.rs", +"ui/issues/issue-35988.rs", +"ui/issues/issue-36023.rs", +"ui/issues/issue-36036-associated-type-layout.rs", +"ui/issues/issue-36075.rs", +"ui/issues/issue-3609.rs", +"ui/issues/issue-36116.rs", +"ui/issues/issue-36260.rs", +"ui/issues/issue-36278-prefix-nesting.rs", +"ui/issues/issue-36299.rs", +"ui/issues/issue-36379.rs", +"ui/issues/issue-36400.rs", +"ui/issues/issue-36401.rs", +"ui/issues/issue-36474.rs", +"ui/issues/issue-3656.rs", +"ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.rs", +"ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.rs", +"ui/issues/issue-36744-bitcast-args-if-needed.rs", +"ui/issues/issue-36786-resolve-call.rs", +"ui/issues/issue-3680.rs", +"ui/issues/issue-36816.rs", +"ui/issues/issue-36836.rs", +"ui/issues/issue-36839.rs", +"ui/issues/issue-36856.rs", +"ui/issues/issue-36936.rs", +"ui/issues/issue-36954.rs", +"ui/issues/issue-3702-2.rs", +"ui/issues/issue-3702.rs", +"ui/issues/issue-37051.rs", +"ui/issues/issue-37109.rs", +"ui/issues/issue-37131.rs", +"ui/issues/issue-37311-type-length-limit/issue-37311.rs", +"ui/issues/issue-3743.rs", +"ui/issues/issue-37510.rs", +"ui/issues/issue-3753.rs", +"ui/issues/issue-37534.rs", +"ui/issues/issue-37576.rs", +"ui/issues/issue-37598.rs", +"ui/issues/issue-3763.rs", +"ui/issues/issue-37665.rs", +"ui/issues/issue-37686.rs", +"ui/issues/issue-37725.rs", +"ui/issues/issue-37733.rs", +"ui/issues/issue-3779.rs", +"ui/issues/issue-37884.rs", +"ui/issues/issue-38160.rs", +"ui/issues/issue-38190.rs", +"ui/issues/issue-38226.rs", +"ui/issues/issue-38381.rs", +"ui/issues/issue-38412.rs", +"ui/issues/issue-38437.rs", +"ui/issues/issue-38458.rs", +"ui/issues/issue-3847.rs", +"ui/issues/issue-38556.rs", +"ui/issues/issue-38727.rs", +"ui/issues/issue-3874.rs", +"ui/issues/issue-38763.rs", +"ui/issues/issue-38857.rs", +"ui/issues/issue-38875/auxiliary/issue-38875-b.rs", +"ui/issues/issue-38875/issue-38875.rs", +"ui/issues/issue-3888-2.rs", +"ui/issues/issue-38919.rs", +"ui/issues/issue-38942.rs", +"ui/issues/issue-3895.rs", +"ui/issues/issue-38954.rs", +"ui/issues/issue-38987.rs", +"ui/issues/issue-39089.rs", +"ui/issues/issue-39175.rs", +"ui/issues/issue-39211.rs", +"ui/issues/issue-39367.rs", +"ui/issues/issue-39548.rs", +"ui/issues/issue-39687.rs", +"ui/issues/issue-39709.rs", +"ui/issues/issue-3979-2.rs", +"ui/issues/issue-3979-generics.rs", +"ui/issues/issue-3979-xcrate.rs", +"ui/issues/issue-3979.rs", +"ui/issues/issue-39808.rs", +"ui/issues/issue-39827.rs", +"ui/issues/issue-39848.rs", +"ui/issues/issue-3991.rs", +"ui/issues/issue-3993.rs", +"ui/issues/issue-39970.rs", +"ui/issues/issue-39984.rs", +"ui/issues/issue-40000.rs", +"ui/issues/issue-40136.rs", +"ui/issues/issue-40235.rs", +"ui/issues/issue-4025.rs", +"ui/issues/issue-40288-2.rs", +"ui/issues/issue-40288.rs", +"ui/issues/issue-40350.rs", +"ui/issues/issue-40402-ref-hints/issue-40402-1.rs", +"ui/issues/issue-40402-ref-hints/issue-40402-2.rs", +"ui/issues/issue-40408.rs", +"ui/issues/issue-40510-captured-variable-return/issue-40510-1.rs", +"ui/issues/issue-40510-captured-variable-return/issue-40510-2.rs", +"ui/issues/issue-40510-captured-variable-return/issue-40510-3.rs", +"ui/issues/issue-40510-captured-variable-return/issue-40510-4.rs", +"ui/issues/issue-40610.rs", +"ui/issues/issue-40749.rs", +"ui/issues/issue-40782.rs", +"ui/issues/issue-40827.rs", +"ui/issues/issue-40845.rs", +"ui/issues/issue-40861.rs", +"ui/issues/issue-40883.rs", +"ui/issues/issue-40951.rs", +"ui/issues/issue-41053.rs", +"ui/issues/issue-41139.rs", +"ui/issues/issue-41213.rs", +"ui/issues/issue-41229-ref-str.rs", +"ui/issues/issue-41272.rs", +"ui/issues/issue-41298.rs", +"ui/issues/issue-41479.rs", +"ui/issues/issue-41498.rs", +"ui/issues/issue-41549.rs", +"ui/issues/issue-41604.rs", +"ui/issues/issue-41628.rs", +"ui/issues/issue-41652/auxiliary/issue-41652-b.rs", +"ui/issues/issue-41652/issue-41652.rs", +"ui/issues/issue-41677.rs", +"ui/issues/issue-41696.rs", +"ui/issues/issue-41726.rs", +"ui/issues/issue-41742.rs", +"ui/issues/issue-41744.rs", +"ui/issues/issue-41849-variance-req.rs", +"ui/issues/issue-41880.rs", +"ui/issues/issue-41888.rs", +"ui/issues/issue-41936-variance-coerce-unsized-cycle.rs", +"ui/issues/issue-41974.rs", +"ui/issues/issue-41998.rs", +"ui/issues/issue-42007.rs", +"ui/issues/issue-4208.rs", +"ui/issues/issue-42106.rs", +"ui/issues/issue-42148.rs", +"ui/issues/issue-42210.rs", +"ui/issues/issue-4228.rs", +"ui/issues/issue-42312.rs", +"ui/issues/issue-42453.rs", +"ui/issues/issue-42467.rs", +"ui/issues/issue-4252.rs", +"ui/issues/issue-42552.rs", +"ui/issues/issue-4265.rs", +"ui/issues/issue-42755.rs", +"ui/issues/issue-42796.rs", +"ui/issues/issue-42880.rs", +"ui/issues/issue-42956.rs", +"ui/issues/issue-43057.rs", +"ui/issues/issue-43162.rs", +"ui/issues/issue-43205.rs", +"ui/issues/issue-43250.rs", +"ui/issues/issue-43291.rs", +"ui/issues/issue-4333.rs", +"ui/issues/issue-4335.rs", +"ui/issues/issue-43355.rs", +"ui/issues/issue-43357.rs", +"ui/issues/issue-43420-no-over-suggest.rs", +"ui/issues/issue-43424.rs", +"ui/issues/issue-43431.rs", +"ui/issues/issue-43483.rs", +"ui/issues/issue-43692.rs", +"ui/issues/issue-43806.rs", +"ui/issues/issue-43853.rs", +"ui/issues/issue-4387.rs", +"ui/issues/issue-43910.rs", +"ui/issues/issue-43923.rs", +"ui/issues/issue-43925.rs", +"ui/issues/issue-43926.rs", +"ui/issues/issue-43988.rs", +"ui/issues/issue-44023.rs", +"ui/issues/issue-44056.rs", +"ui/issues/issue-44078.rs", +"ui/issues/issue-44216-add-instant.rs", +"ui/issues/issue-44216-add-system-time.rs", +"ui/issues/issue-44216-sub-instant.rs", +"ui/issues/issue-44216-sub-system-time.rs", +"ui/issues/issue-44239.rs", +"ui/issues/issue-44247.rs", +"ui/issues/issue-44405.rs", +"ui/issues/issue-4464.rs", +"ui/issues/issue-44730.rs", +"ui/issues/issue-44851.rs", +"ui/issues/issue-4517.rs", +"ui/issues/issue-4541.rs", +"ui/issues/issue-4542.rs", +"ui/issues/issue-45425.rs", +"ui/issues/issue-4545.rs", +"ui/issues/issue-45510.rs", +"ui/issues/issue-45562.rs", +"ui/issues/issue-45697-1.rs", +"ui/issues/issue-45697.rs", +"ui/issues/issue-45730.rs", +"ui/issues/issue-45731.rs", +"ui/issues/issue-45801.rs", +"ui/issues/issue-45965.rs", +"ui/issues/issue-46069.rs", +"ui/issues/issue-46101.rs", +"ui/issues/issue-46302.rs", +"ui/issues/issue-46311.rs", +"ui/issues/issue-46332.rs", +"ui/issues/issue-46471-1.rs", +"ui/issues/issue-46472.rs", +"ui/issues/issue-46604.rs", +"ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs", +"ui/issues/issue-46771.rs", +"ui/issues/issue-46855.rs", +"ui/issues/issue-46964.rs", +"ui/issues/issue-46983.rs", +"ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs", +"ui/issues/issue-47094.rs", +"ui/issues/issue-47184.rs", +"ui/issues/issue-47309.rs", +"ui/issues/issue-4734.rs", +"ui/issues/issue-4735.rs", +"ui/issues/issue-4736.rs", +"ui/issues/issue-47364.rs", +"ui/issues/issue-47377.rs", +"ui/issues/issue-47380.rs", +"ui/issues/issue-47486.rs", +"ui/issues/issue-4759-1.rs", +"ui/issues/issue-4759.rs", +"ui/issues/issue-47638.rs", +"ui/issues/issue-47673.rs", +"ui/issues/issue-47703-1.rs", +"ui/issues/issue-47703-tuple.rs", +"ui/issues/issue-47703.rs", +"ui/issues/issue-47715.rs", +"ui/issues/issue-47722.rs", +"ui/issues/issue-48006.rs", +"ui/issues/issue-48131.rs", +"ui/issues/issue-48132.rs", +"ui/issues/issue-48159.rs", +"ui/issues/issue-48276.rs", +"ui/issues/issue-4830.rs", +"ui/issues/issue-48364.rs", +"ui/issues/issue-48728.rs", +"ui/issues/issue-4875.rs", +"ui/issues/issue-48838.rs", +"ui/issues/issue-48984.rs", +"ui/issues/issue-49298.rs", +"ui/issues/issue-4935.rs", +"ui/issues/issue-49544.rs", +"ui/issues/issue-49632.rs", +"ui/issues/issue-4968.rs", +"ui/issues/issue-4972.rs", +"ui/issues/issue-49824.rs", +"ui/issues/issue-49854.rs", +"ui/issues/issue-49919.rs", +"ui/issues/issue-49934-errors.rs", +"ui/issues/issue-49934.rs", +"ui/issues/issue-49955.rs", +"ui/issues/issue-49973.rs", +"ui/issues/issue-50187.rs", +"ui/issues/issue-50403.rs", +"ui/issues/issue-50411.rs", +"ui/issues/issue-50415.rs", +"ui/issues/issue-50442.rs", +"ui/issues/issue-50471.rs", +"ui/issues/issue-50518.rs", +"ui/issues/issue-50571.rs", +"ui/issues/issue-50581.rs", +"ui/issues/issue-50582.rs", +"ui/issues/issue-50585.rs", +"ui/issues/issue-50600.rs", +"ui/issues/issue-50618.rs", +"ui/issues/issue-5062.rs", +"ui/issues/issue-5067.rs", +"ui/issues/issue-50688.rs", +"ui/issues/issue-50714-1.rs", +"ui/issues/issue-50714.rs", +"ui/issues/issue-50761.rs", +"ui/issues/issue-50781.rs", +"ui/issues/issue-50802.rs", +"ui/issues/issue-50811.rs", +"ui/issues/issue-5100.rs", +"ui/issues/issue-51022.rs", +"ui/issues/issue-51044.rs", +"ui/issues/issue-51102.rs", +"ui/issues/issue-51116.rs", +"ui/issues/issue-51154.rs", +"ui/issues/issue-51515.rs", +"ui/issues/issue-5153.rs", +"ui/issues/issue-51632-try-desugar-incompatible-types.rs", +"ui/issues/issue-51655.rs", +"ui/issues/issue-51714.rs", +"ui/issues/issue-51798.rs", +"ui/issues/issue-51874.rs", +"ui/issues/issue-51907.rs", +"ui/issues/issue-5192.rs", +"ui/issues/issue-51947.rs", +"ui/issues/issue-52049.rs", +"ui/issues/issue-52126-assign-op-invariance.rs", +"ui/issues/issue-52262.rs", +"ui/issues/issue-5239-1.rs", +"ui/issues/issue-5239-2.rs", +"ui/issues/issue-52489.rs", +"ui/issues/issue-52533.rs", +"ui/issues/issue-52717.rs", +"ui/issues/issue-5280.rs", +"ui/issues/issue-5315.rs", +"ui/issues/issue-5321-immediates-with-bare-self.rs", +"ui/issues/issue-53251.rs", +"ui/issues/issue-53275.rs", +"ui/issues/issue-53300.rs", +"ui/issues/issue-53333.rs", +"ui/issues/issue-53348.rs", +"ui/issues/issue-53419.rs", +"ui/issues/issue-53498.rs", +"ui/issues/issue-53568.rs", +"ui/issues/issue-5358-1.rs", +"ui/issues/issue-53728.rs", +"ui/issues/issue-53843.rs", +"ui/issues/issue-54044.rs", +"ui/issues/issue-54062.rs", +"ui/issues/issue-54094.rs", +"ui/issues/issue-5439.rs", +"ui/issues/issue-54410.rs", +"ui/issues/issue-54462-mutable-noalias-correctness.rs", +"ui/issues/issue-54477-reduced-2.rs", +"ui/issues/issue-54696.rs", +"ui/issues/issue-5518.rs", +"ui/issues/issue-5521.rs", +"ui/issues/issue-55376.rs", +"ui/issues/issue-55380.rs", +"ui/issues/issue-5550.rs", +"ui/issues/issue-5554.rs", +"ui/issues/issue-55587.rs", +"ui/issues/issue-5572.rs", +"ui/issues/issue-55731.rs", +"ui/issues/issue-56128.rs", +"ui/issues/issue-56175.rs", +"ui/issues/issue-56199.rs", +"ui/issues/issue-56229.rs", +"ui/issues/issue-56237.rs", +"ui/issues/issue-5666.rs", +"ui/issues/issue-56806.rs", +"ui/issues/issue-56835.rs", +"ui/issues/issue-56870.rs", +"ui/issues/issue-5688.rs", +"ui/issues/issue-56943.rs", +"ui/issues/issue-5708.rs", +"ui/issues/issue-57156.rs", +"ui/issues/issue-57162.rs", +"ui/issues/issue-5718.rs", +"ui/issues/issue-57198-pass.rs", +"ui/issues/issue-57271.rs", +"ui/issues/issue-57362-1.rs", +"ui/issues/issue-57362-2.rs", +"ui/issues/issue-57399-self-return-impl-trait.rs", +"ui/issues/issue-5741.rs", +"ui/issues/issue-5754.rs", +"ui/issues/issue-57741-dereference-boxed-value/issue-57741-1.rs", +"ui/issues/issue-57741-dereference-boxed-value/issue-57741.rs", +"ui/issues/issue-57781.rs", +"ui/issues/issue-57924.rs", +"ui/issues/issue-58212.rs", +"ui/issues/issue-58375-monomorphize-default-impls.rs", +"ui/issues/issue-5844.rs", +"ui/issues/issue-58463.rs", +"ui/issues/issue-58712.rs", +"ui/issues/issue-58734.rs", +"ui/issues/issue-5883.rs", +"ui/issues/issue-5884.rs", +"ui/issues/issue-58857.rs", +"ui/issues/issue-5900.rs", +"ui/issues/issue-59020.rs", +"ui/issues/issue-5917.rs", +"ui/issues/issue-59326.rs", +"ui/issues/issue-59488.rs", +"ui/issues/issue-59494.rs", +"ui/issues/issue-5950.rs", +"ui/issues/issue-59756.rs", +"ui/issues/issue-5988.rs", +"ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs", +"ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs", +"ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs", +"ui/issues/issue-60218.rs", +"ui/issues/issue-60622.rs", +"ui/issues/issue-60989.rs", +"ui/issues/issue-61106.rs", +"ui/issues/issue-61108.rs", +"ui/issues/issue-6117.rs", +"ui/issues/issue-6130.rs", +"ui/issues/issue-61475.rs", +"ui/issues/issue-6153.rs", +"ui/issues/issue-61623.rs", +"ui/issues/issue-61894.rs", +"ui/issues/issue-62480.rs", +"ui/issues/issue-6318.rs", +"ui/issues/issue-6344-let.rs", +"ui/issues/issue-6344-match.rs", +"ui/issues/issue-63983.rs", +"ui/issues/issue-64430.rs", +"ui/issues/issue-64559.rs", +"ui/issues/issue-64593.rs", +"ui/issues/issue-64792-bad-unicode-ctor.rs", +"ui/issues/issue-65131.rs", +"ui/issues/issue-65230.rs", +"ui/issues/issue-65462.rs", +"ui/issues/issue-6557.rs", +"ui/issues/issue-6596-2.rs", +"ui/issues/issue-66308.rs", +"ui/issues/issue-66353.rs", +"ui/issues/issue-66667-function-cmp-cycle.rs", +"ui/issues/issue-66702-break-outside-loop-val.rs", +"ui/issues/issue-66706.rs", +"ui/issues/issue-66923-show-error-for-correct-call.rs", +"ui/issues/issue-67039-unsound-pin-partialeq.rs", +"ui/issues/issue-6738.rs", +"ui/issues/issue-67535.rs", +"ui/issues/issue-67552.rs", +"ui/issues/issue-68010-large-zst-consts.rs", +"ui/issues/issue-68696-catch-during-unwind.rs", +"ui/issues/issue-6892.rs", +"ui/issues/issue-68951.rs", +"ui/issues/issue-6898.rs", +"ui/issues/issue-69130.rs", +"ui/issues/issue-6919.rs", +"ui/issues/issue-69306.rs", +"ui/issues/issue-6936.rs", +"ui/issues/issue-69455.rs", +"ui/issues/issue-69602-type-err-during-codegen-ice.rs", +"ui/issues/issue-69683.rs", +"ui/issues/issue-70093/issue-70093-link-directives.rs", +"ui/issues/issue-70093/issue-70093.rs", +"ui/issues/issue-7012.rs", +"ui/issues/issue-70381.rs", +"ui/issues/issue-7044.rs", +"ui/issues/issue-7061.rs", +"ui/issues/issue-70673.rs", +"ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs", +"ui/issues/issue-70746.rs", +"ui/issues/issue-7092.rs", +"ui/issues/issue-71406.rs", +"ui/issues/issue-71676-suggest-deref/issue-71676-1.rs", +"ui/issues/issue-71676-suggest-deref/issue-71676-2.rs", +"ui/issues/issue-7178.rs", +"ui/issues/issue-72002.rs", +"ui/issues/issue-72076.rs", +"ui/issues/issue-72278.rs", +"ui/issues/issue-7246.rs", +"ui/issues/issue-7268.rs", +"ui/issues/issue-72839-error-overflow.rs", +"ui/issues/issue-72933-match-stack-overflow.rs", +"ui/issues/issue-73112.rs", +"ui/issues/issue-73229.rs", +"ui/issues/issue-7344.rs", +"ui/issues/issue-7364.rs", +"ui/issues/issue-74082.rs", +"ui/issues/issue-74564-if-expr-stack-overflow.rs", +"ui/issues/issue-7519-match-unit-in-arg.rs", +"ui/issues/issue-75283.rs", +"ui/issues/issue-7563.rs", +"ui/issues/issue-75704.rs", +"ui/issues/issue-7575.rs", +"ui/issues/issue-76042.rs", +"ui/issues/issue-7607-1.rs", +"ui/issues/issue-7607-2.rs", +"ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.rs", +"ui/issues/issue-76077-inaccesible-private-fields/issue-76077.rs", +"ui/issues/issue-76191.rs", +"ui/issues/issue-7660.rs", +"ui/issues/issue-7663.rs", +"ui/issues/issue-7673-cast-generically-implemented-trait.rs", +"ui/issues/issue-77218/issue-77218-2.rs", +"ui/issues/issue-77218/issue-77218.rs", +"ui/issues/issue-7784.rs", +"ui/issues/issue-77919.rs", +"ui/issues/issue-78192.rs", +"ui/issues/issue-78622.rs", +"ui/issues/issue-7867.rs", +"ui/issues/issue-78957.rs", +"ui/issues/issue-7899.rs", +"ui/issues/issue-7911.rs", +"ui/issues/issue-7950.rs", +"ui/issues/issue-7970a.rs", +"ui/issues/issue-8044.rs", +"ui/issues/issue-80607.rs", +"ui/issues/issue-81584.rs", +"ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs", +"ui/issues/issue-81918.rs", +"ui/issues/issue-8248.rs", +"ui/issues/issue-8249.rs", +"ui/issues/issue-8259.rs", +"ui/issues/issue-83048.rs", +"ui/issues/issue-8391.rs", +"ui/issues/issue-8398.rs", +"ui/issues/issue-8401.rs", +"ui/issues/issue-8498.rs", +"ui/issues/issue-8506.rs", +"ui/issues/issue-8521.rs", +"ui/issues/issue-85461.rs", +"ui/issues/issue-8578.rs", +"ui/issues/issue-86756.rs", +"ui/issues/issue-87199.rs", +"ui/issues/issue-8727.rs", +"ui/issues/issue-87490.rs", +"ui/issues/issue-8761.rs", +"ui/issues/issue-8767.rs", +"ui/issues/issue-87707.rs", +"ui/issues/issue-8783.rs", +"ui/issues/issue-88150.rs", +"ui/issues/issue-8860.rs", +"ui/issues/issue-8898.rs", +"ui/issues/issue-9047.rs", +"ui/issues/issue-9110.rs", +"ui/issues/issue-9123.rs", +"ui/issues/issue-9129.rs", +"ui/issues/issue-91489.rs", +"ui/issues/issue-9155.rs", +"ui/issues/issue-9188.rs", +"ui/issues/issue-9243.rs", +"ui/issues/issue-9249.rs", +"ui/issues/issue-9259.rs", +"ui/issues/issue-92741.rs", +"ui/issues/issue-9382.rs", +"ui/issues/issue-9446.rs", +"ui/issues/issue-9575.rs", +"ui/issues/issue-9719.rs", +"ui/issues/issue-9725.rs", +"ui/issues/issue-9737.rs", +"ui/issues/issue-9814.rs", +"ui/issues/issue-98299.rs", +"ui/issues/issue-9837.rs", +"ui/issues/issue-9906.rs", +"ui/issues/issue-9918.rs", +"ui/issues/issue-9942.rs", +"ui/issues/issue-9951.rs", +"ui/issues/issue-9968.rs", +"ui/issues/issue-99838.rs", +"ui/iterators/issue-28098.rs", +"ui/iterators/issue-58952-filter-type-length.rs", +"ui/lang-items/issue-19660.rs", +"ui/lang-items/issue-83471.rs", +"ui/lang-items/issue-87573.rs", +"ui/late-bound-lifetimes/issue-36381.rs", +"ui/late-bound-lifetimes/issue-47511.rs", +"ui/late-bound-lifetimes/issue-80618.rs", +"ui/layout/issue-112048-unsizing-field-order.rs", +"ui/layout/issue-112048-unsizing-niche.rs", +"ui/layout/issue-113941.rs", +"ui/layout/issue-60431-unsized-tail-behind-projection.rs", +"ui/layout/issue-84108.rs", +"ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs", +"ui/layout/issue-96185-overaligned-enum.rs", +"ui/let-else/issue-100103.rs", +"ui/let-else/issue-102317.rs", +"ui/let-else/issue-94176.rs", +"ui/let-else/issue-99975.rs", +"ui/lifetimes/auxiliary/issue-91763-aux.rs", +"ui/lifetimes/issue-103582-hint-for-missing-lifetime-bound-on-trait-object-using-type-alias.rs", +"ui/lifetimes/issue-104432-unused-lifetimes-in-expansion.rs", +"ui/lifetimes/issue-105227.rs", +"ui/lifetimes/issue-105507.rs", +"ui/lifetimes/issue-105675.rs", +"ui/lifetimes/issue-107492-default-value-for-lifetime.rs", +"ui/lifetimes/issue-107988.rs", +"ui/lifetimes/issue-17728.rs", +"ui/lifetimes/issue-19707.rs", +"ui/lifetimes/issue-26638.rs", +"ui/lifetimes/issue-34979.rs", +"ui/lifetimes/issue-36744-without-calls.rs", +"ui/lifetimes/issue-54378.rs", +"ui/lifetimes/issue-55796.rs", +"ui/lifetimes/issue-64173-unused-lifetimes.rs", +"ui/lifetimes/issue-67498.rs", +"ui/lifetimes/issue-69314.rs", +"ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs", +"ui/lifetimes/issue-76168-hr-outlives-2.rs", +"ui/lifetimes/issue-76168-hr-outlives-3.rs", +"ui/lifetimes/issue-76168-hr-outlives.rs", +"ui/lifetimes/issue-77175.rs", +"ui/lifetimes/issue-79187-2.rs", +"ui/lifetimes/issue-79187.rs", +"ui/lifetimes/issue-83737-binders-across-types.rs", +"ui/lifetimes/issue-83737-erasing-bound-vars.rs", +"ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs", +"ui/lifetimes/issue-83907-invalid-fn-like-path.rs", +"ui/lifetimes/issue-84398.rs", +"ui/lifetimes/issue-84604.rs", +"ui/lifetimes/issue-90170-elision-mismatch.rs", +"ui/lifetimes/issue-90600-expected-return-static-indirect.rs", +"ui/lifetimes/issue-91763.rs", +"ui/lifetimes/issue-93911.rs", +"ui/lifetimes/issue-95023.rs", +"ui/lifetimes/issue-97193.rs", +"ui/lifetimes/issue-97194.rs", +"ui/lifetimes/lifetime-errors/issue_74400.rs", +"ui/limits/issue-15919-32.rs", +"ui/limits/issue-15919-64.rs", +"ui/limits/issue-17913.rs", +"ui/limits/issue-55878.rs", +"ui/limits/issue-56762.rs", +"ui/limits/issue-69485-var-size-diffs-too-large.rs", +"ui/limits/issue-75158-64.rs", +"ui/linkage-attr/issue-10755.rs", +"ui/linkage-attr/issue-109144.rs", +"ui/lint/dead-code/issue-41883.rs", +"ui/lint/dead-code/issue-59003.rs", +"ui/lint/dead-code/issue-68408-false-positive.rs", +"ui/lint/dead-code/issue-85071-2.rs", +"ui/lint/dead-code/issue-85071.rs", +"ui/lint/dead-code/issue-85255.rs", +"ui/lint/issue-101284.rs", +"ui/lint/issue-102705.rs", +"ui/lint/issue-103317.rs", +"ui/lint/issue-103435-extra-parentheses.rs", +"ui/lint/issue-104392.rs", +"ui/lint/issue-104897.rs", +"ui/lint/issue-106991.rs", +"ui/lint/issue-108155.rs", +"ui/lint/issue-109152.rs", +"ui/lint/issue-109529.rs", +"ui/lint/issue-110573.rs", +"ui/lint/issue-111359.rs", +"ui/lint/issue-112489.rs", +"ui/lint/issue-117949.rs", +"ui/lint/issue-121070-let-range.rs", +"ui/lint/issue-14309.rs", +"ui/lint/issue-14837.rs", +"ui/lint/issue-17718-const-naming.rs", +"ui/lint/issue-1866.rs", +"ui/lint/issue-19102.rs", +"ui/lint/issue-20343.rs", +"ui/lint/issue-30302.rs", +"ui/lint/issue-31924-non-snake-ffi.rs", +"ui/lint/issue-34798.rs", +"ui/lint/issue-35075.rs", +"ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs", +"ui/lint/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs", +"ui/lint/issue-54099-camel-case-underscore-types.rs", +"ui/lint/issue-57410-1.rs", +"ui/lint/issue-57410.rs", +"ui/lint/issue-63364.rs", +"ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs", +"ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs", +"ui/lint/issue-79546-fuel-ice.rs", +"ui/lint/issue-79744.rs", +"ui/lint/issue-80988.rs", +"ui/lint/issue-81218.rs", +"ui/lint/issue-83477.rs", +"ui/lint/issue-87274-paren-parent.rs", +"ui/lint/issue-89469.rs", +"ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs", +"ui/lint/issue-97094.rs", +"ui/lint/issue-99387.rs", +"ui/lint/let_underscore/issue-119696-err-on-fn.rs", +"ui/lint/let_underscore/issue-119697-extra-let.rs", +"ui/lint/must_not_suspend/issue-89562.rs", +"ui/lint/unused/issue-103320-must-use-ops.rs", +"ui/lint/unused/issue-104397.rs", +"ui/lint/unused/issue-105061-array-lint.rs", +"ui/lint/unused/issue-105061-should-lint.rs", +"ui/lint/unused/issue-105061.rs", +"ui/lint/unused/issue-117142-invalid-remove-parens.rs", +"ui/lint/unused/issue-117284-arg-in-macro.rs", +"ui/lint/unused/issue-119383-if-let-guard.rs", +"ui/lint/unused/issue-30730.rs", +"ui/lint/unused/issue-46576.rs", +"ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs", +"ui/lint/unused/issue-54180-unused-ref-field.rs", +"ui/lint/unused/issue-54538-unused-parens-lint.rs", +"ui/lint/unused/issue-59896.rs", +"ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs", +"ui/lint/unused/issue-70041.rs", +"ui/lint/unused/issue-71290-unused-paren-binop.rs", +"ui/lint/unused/issue-74883-unused-paren-baren-yield.rs", +"ui/lint/unused/issue-81314-unused-span-ident.rs", +"ui/lint/unused/issue-85913.rs", +"ui/lint/unused/issue-88519-unused-paren.rs", +"ui/lint/unused/issue-90807-unused-paren-error.rs", +"ui/lint/unused/issue-90807-unused-paren.rs", +"ui/lint/unused/issue-92751.rs", +"ui/lint/unused/issue-96606.rs", +"ui/lint/use-redundant/issue-92904.rs", +"ui/loops/issue-50576.rs", +"ui/loops/issue-69225-SCEVAddExpr-wrap-flag.rs", +"ui/loops/issue-69225-layout-repeated-checked-add.rs", +"ui/loops/issue-82916.rs", +"ui/lowering/issue-121108.rs", +"ui/lowering/issue-96847.rs", +"ui/lto/issue-100772.rs", +"ui/lto/issue-105637.rs", +"ui/lto/issue-11154.rs", +"ui/macros/auxiliary/issue-100199.rs", +"ui/macros/auxiliary/issue-19163.rs", +"ui/macros/auxiliary/issue-40469.rs", +"ui/macros/auxiliary/issue-75982.rs", +"ui/macros/issue-100199.rs", +"ui/macros/issue-102878.rs", +"ui/macros/issue-103529.rs", +"ui/macros/issue-104769-concat_bytes-invalid-literal.rs", +"ui/macros/issue-105011.rs", +"ui/macros/issue-10536.rs", +"ui/macros/issue-106837.rs", +"ui/macros/issue-109237.rs", +"ui/macros/issue-111749.rs", +"ui/macros/issue-112342-1.rs", +"ui/macros/issue-112342-2.rs", +"ui/macros/issue-118048.rs", +"ui/macros/issue-118786.rs", +"ui/macros/issue-16098.rs", +"ui/macros/issue-19163.rs", +"ui/macros/issue-21356.rs", +"ui/macros/issue-22463.rs", +"ui/macros/issue-25274.rs", +"ui/macros/issue-25385.rs", +"ui/macros/issue-26094.rs", +"ui/macros/issue-26322.rs", +"ui/macros/issue-2804-2.rs", +"ui/macros/issue-2804.rs", +"ui/macros/issue-29084.rs", +"ui/macros/issue-30143.rs", +"ui/macros/issue-33185.rs", +"ui/macros/issue-34171.rs", +"ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs", +"ui/macros/issue-35450.rs", +"ui/macros/issue-37175.rs", +"ui/macros/issue-38715.rs", +"ui/macros/issue-39388.rs", +"ui/macros/issue-39404.rs", +"ui/macros/issue-39467.rs", +"ui/macros/issue-40469.rs", +"ui/macros/issue-40770.rs", +"ui/macros/issue-41776.rs", +"ui/macros/issue-41803.rs", +"ui/macros/issue-42954.rs", +"ui/macros/issue-44127.rs", +"ui/macros/issue-46438.rs", +"ui/macros/issue-5060.rs", +"ui/macros/issue-51848.rs", +"ui/macros/issue-52169.rs", +"ui/macros/issue-54441.rs", +"ui/macros/issue-57597.rs", +"ui/macros/issue-58490.rs", +"ui/macros/issue-61033-1.rs", +"ui/macros/issue-61033-2.rs", +"ui/macros/issue-61053-different-kleene.rs", +"ui/macros/issue-61053-duplicate-binder.rs", +"ui/macros/issue-61053-missing-repetition.rs", +"ui/macros/issue-61053-unbound.rs", +"ui/macros/issue-63102.rs", +"ui/macros/issue-6596-1.rs", +"ui/macros/issue-68058.rs", +"ui/macros/issue-68060.rs", +"ui/macros/issue-69396-const-no-type-in-macro.rs", +"ui/macros/issue-69838-mods-relative-to-included-path.rs", +"ui/macros/issue-70446.rs", +"ui/macros/issue-75982-foreign-macro-weird-mod.rs", +"ui/macros/issue-77475.rs", +"ui/macros/issue-78325-inconsistent-resolution.rs", +"ui/macros/issue-78333.rs", +"ui/macros/issue-78892-substitution-in-statement-attr.rs", +"ui/macros/issue-81006.rs", +"ui/macros/issue-83340.rs", +"ui/macros/issue-83344.rs", +"ui/macros/issue-84195-lint-anon-const.rs", +"ui/macros/issue-84429-matches-edition.rs", +"ui/macros/issue-84632-eager-expansion-recursion-limit.rs", +"ui/macros/issue-86082-option-env-invalid-char.rs", +"ui/macros/issue-86865.rs", +"ui/macros/issue-8709.rs", +"ui/macros/issue-87877.rs", +"ui/macros/issue-88206.rs", +"ui/macros/issue-88228.rs", +"ui/macros/issue-8851.rs", +"ui/macros/issue-92267.rs", +"ui/macros/issue-95267.rs", +"ui/macros/issue-95533.rs", +"ui/macros/issue-98466-allow.rs", +"ui/macros/issue-98466.rs", +"ui/macros/issue-98790.rs", +"ui/macros/issue-99261.rs", +"ui/macros/issue-99265.rs", +"ui/macros/issue-99907.rs", +"ui/macros/rfc-3086-metavar-expr/issue-111904.rs", +"ui/malformed/issue-107423-unused-delim-only-one-no-pair.rs", +"ui/malformed/issue-69341-malformed-derive-inert.rs", +"ui/marker_trait_attr/issue-61651-type-mismatch.rs", +"ui/match/issue-112438.rs", +"ui/match/issue-113012.rs", +"ui/match/issue-11319.rs", +"ui/match/issue-114691.rs", +"ui/match/issue-115681.rs", +"ui/match/issue-11940.rs", +"ui/match/issue-12552.rs", +"ui/match/issue-18060.rs", +"ui/match/issue-26251.rs", +"ui/match/issue-26996.rs", +"ui/match/issue-27021.rs", +"ui/match/issue-33498.rs", +"ui/match/issue-42679.rs", +"ui/match/issue-46920-byte-array-patterns.rs", +"ui/match/issue-5530.rs", +"ui/match/issue-56685.rs", +"ui/match/issue-70972-dyn-trait.rs", +"ui/match/issue-72680.rs", +"ui/match/issue-72896-non-partial-eq-const.rs", +"ui/match/issue-74050-end-span.rs", +"ui/match/issue-82392.rs", +"ui/match/issue-82866.rs", +"ui/match/issue-84434.rs", +"ui/match/issue-91058.rs", +"ui/match/issue-92100.rs", +"ui/methods/issue-3707.rs", +"ui/methods/issues/issue-105732.rs", +"ui/methods/issues/issue-61525.rs", +"ui/methods/issues/issue-84495.rs", +"ui/methods/issues/issue-90315.rs", +"ui/methods/issues/issue-94581.rs", +"ui/mir/auxiliary/issue_76375_aux.rs", +"ui/mir/issue-101844.rs", +"ui/mir/issue-102389.rs", +"ui/mir/issue-105809.rs", +"ui/mir/issue-106062.rs", +"ui/mir/issue-107678-projection-with-lifetime.rs", +"ui/mir/issue-107691.rs", +"ui/mir/issue-109004-drop-large-array.rs", +"ui/mir/issue-109743.rs", +"ui/mir/issue-112269.rs", +"ui/mir/issue-121103.rs", +"ui/mir/issue-29227.rs", +"ui/mir/issue-46845.rs", +"ui/mir/issue-60390.rs", +"ui/mir/issue-66851.rs", +"ui/mir/issue-66930.rs", +"ui/mir/issue-67639-normalization-ice.rs", +"ui/mir/issue-67710-inline-projection.rs", +"ui/mir/issue-67947.rs", +"ui/mir/issue-68841.rs", +"ui/mir/issue-71793-inline-args-storage.rs", +"ui/mir/issue-73914.rs", +"ui/mir/issue-74739.rs", +"ui/mir/issue-75053.rs", +"ui/mir/issue-75419-validation-impl-trait.rs", +"ui/mir/issue-76248.rs", +"ui/mir/issue-76375.rs", +"ui/mir/issue-76740-copy-propagation.rs", +"ui/mir/issue-76803-branches-not-same.rs", +"ui/mir/issue-77002.rs", +"ui/mir/issue-77359-simplify-arm-identity.rs", +"ui/mir/issue-77911.rs", +"ui/mir/issue-78496.rs", +"ui/mir/issue-80949.rs", +"ui/mir/issue-83499-input-output-iteration-ice.rs", +"ui/mir/issue-89485.rs", +"ui/mir/issue-91745.rs", +"ui/mir/issue-92893.rs", +"ui/mir/issue-99852.rs", +"ui/mir/issue-99866.rs", +"ui/mir/issue66339.rs", +"ui/mir/validate/issue-95978-validator-lifetime-comparison.rs", +"ui/mismatched_types/issue-106182.rs", +"ui/mismatched_types/issue-112036.rs", +"ui/mismatched_types/issue-118145-unwrap-for-shorthand.rs", +"ui/mismatched_types/issue-118510.rs", +"ui/mismatched_types/issue-13033.rs", +"ui/mismatched_types/issue-19109.rs", +"ui/mismatched_types/issue-26480.rs", +"ui/mismatched_types/issue-35030.rs", +"ui/mismatched_types/issue-36053-2.rs", +"ui/mismatched_types/issue-38371-unfixable.rs", +"ui/mismatched_types/issue-38371.rs", +"ui/mismatched_types/issue-47706-trait.rs", +"ui/mismatched_types/issue-47706.rs", +"ui/mismatched_types/issue-74918-missing-lifetime.rs", +"ui/mismatched_types/issue-75361-mismatched-impl.rs", +"ui/mismatched_types/issue-84976.rs", +"ui/missing-trait-bounds/auxiliary/issue-69725.rs", +"ui/missing-trait-bounds/issue-35677.rs", +"ui/missing-trait-bounds/issue-69725.rs", +"ui/modules/issue-107649.rs", +"ui/modules/issue-56411-aux.rs", +"ui/modules/issue-56411.rs", +"ui/moves/issue-22536-copy-mustnt-zero.rs", +"ui/moves/issue-34721.rs", +"ui/moves/issue-46099-move-in-macro.rs", +"ui/moves/issue-72649-uninit-in-loop.rs", +"ui/moves/issue-75904-move-closure-loop.rs", +"ui/moves/issue-99470-move-out-of-some.rs", +"ui/never_type/issue-10176.rs", +"ui/never_type/issue-13352.rs", +"ui/never_type/issue-2149.rs", +"ui/never_type/issue-44402.rs", +"ui/never_type/issue-51506.rs", +"ui/never_type/issue-52443.rs", +"ui/never_type/issue-5500-1.rs", +"ui/never_type/issue-96335.rs", +"ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs", +"ui/nll/issue-112604-closure-output-normalize.rs", +"ui/nll/issue-16223.rs", +"ui/nll/issue-21114-ebfull.rs", +"ui/nll/issue-21114-kixunil.rs", +"ui/nll/issue-21232-partial-init-and-erroneous-use.rs", +"ui/nll/issue-21232-partial-init-and-use.rs", +"ui/nll/issue-22323-temp-destruction.rs", +"ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs", +"ui/nll/issue-27282-move-match-input-into-guard.rs", +"ui/nll/issue-27282-move-ref-mut-into-guard.rs", +"ui/nll/issue-27282-mutate-before-diverging-arm-1.rs", +"ui/nll/issue-27282-mutate-before-diverging-arm-2.rs", +"ui/nll/issue-27282-mutate-before-diverging-arm-3.rs", +"ui/nll/issue-27282-mutation-in-guard.rs", +"ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs", +"ui/nll/issue-27583.rs", +"ui/nll/issue-27868.rs", +"ui/nll/issue-30104.rs", +"ui/nll/issue-30438-a.rs", +"ui/nll/issue-30438-b.rs", +"ui/nll/issue-30438-c.rs", +"ui/nll/issue-31567.rs", +"ui/nll/issue-32382-index-assoc-type-with-lifetime.rs", +"ui/nll/issue-42574-diagnostic-in-nested-closure.rs", +"ui/nll/issue-43058.rs", +"ui/nll/issue-45157.rs", +"ui/nll/issue-45696-long-live-borrows-in-boxes.rs", +"ui/nll/issue-45696-no-variant-box-recur.rs", +"ui/nll/issue-45696-scribble-on-boxed-borrow.rs", +"ui/nll/issue-46023.rs", +"ui/nll/issue-46036.rs", +"ui/nll/issue-46589.rs", +"ui/nll/issue-47022.rs", +"ui/nll/issue-47153-generic-const.rs", +"ui/nll/issue-47388.rs", +"ui/nll/issue-47470.rs", +"ui/nll/issue-47589.rs", +"ui/nll/issue-48070.rs", +"ui/nll/issue-48179.rs", +"ui/nll/issue-48238.rs", +"ui/nll/issue-48623-closure.rs", +"ui/nll/issue-48623-coroutine.rs", +"ui/nll/issue-48697.rs", +"ui/nll/issue-48803.rs", +"ui/nll/issue-50343.rs", +"ui/nll/issue-50461-used-mut-from-moves.rs", +"ui/nll/issue-50716-1.rs", +"ui/nll/issue-50716.rs", +"ui/nll/issue-51191.rs", +"ui/nll/issue-51244.rs", +"ui/nll/issue-51268.rs", +"ui/nll/issue-51345-2.rs", +"ui/nll/issue-51351.rs", +"ui/nll/issue-51512.rs", +"ui/nll/issue-51770.rs", +"ui/nll/issue-52057.rs", +"ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs", +"ui/nll/issue-52078.rs", +"ui/nll/issue-52086.rs", +"ui/nll/issue-52113.rs", +"ui/nll/issue-52213.rs", +"ui/nll/issue-52533-1.rs", +"ui/nll/issue-52534-1.rs", +"ui/nll/issue-52534-2.rs", +"ui/nll/issue-52534.rs", +"ui/nll/issue-52663-span-decl-captured-variable.rs", +"ui/nll/issue-52663-trait-object.rs", +"ui/nll/issue-52669.rs", +"ui/nll/issue-52742.rs", +"ui/nll/issue-52992.rs", +"ui/nll/issue-53040.rs", +"ui/nll/issue-53119.rs", +"ui/nll/issue-53123-raw-pointer-cast.rs", +"ui/nll/issue-53570.rs", +"ui/nll/issue-53773.rs", +"ui/nll/issue-53807.rs", +"ui/nll/issue-54189.rs", +"ui/nll/issue-54302-cases.rs", +"ui/nll/issue-54302.rs", +"ui/nll/issue-54382-use-span-of-tail-of-block.rs", +"ui/nll/issue-54556-niconii.rs", +"ui/nll/issue-54556-stephaneyfx.rs", +"ui/nll/issue-54556-temps-in-tail-diagnostic.rs", +"ui/nll/issue-54556-used-vs-unused-tails.rs", +"ui/nll/issue-54556-wrap-it-up.rs", +"ui/nll/issue-54779-anon-static-lifetime.rs", +"ui/nll/issue-54943-3.rs", +"ui/nll/issue-54943.rs", +"ui/nll/issue-55288.rs", +"ui/nll/issue-55344.rs", +"ui/nll/issue-55394.rs", +"ui/nll/issue-55401.rs", +"ui/nll/issue-55511.rs", +"ui/nll/issue-55651.rs", +"ui/nll/issue-55825-const-fn.rs", +"ui/nll/issue-55850.rs", +"ui/nll/issue-57100.rs", +"ui/nll/issue-57265-return-type-wf-check.rs", +"ui/nll/issue-57280-1-flipped.rs", +"ui/nll/issue-57280-1.rs", +"ui/nll/issue-57280.rs", +"ui/nll/issue-57642-higher-ranked-subtype.rs", +"ui/nll/issue-57843.rs", +"ui/nll/issue-57960.rs", +"ui/nll/issue-57989.rs", +"ui/nll/issue-58053.rs", +"ui/nll/issue-58299.rs", +"ui/nll/issue-61311-normalize.rs", +"ui/nll/issue-61320-normalize.rs", +"ui/nll/issue-61424.rs", +"ui/nll/issue-62007-assign-const-index.rs", +"ui/nll/issue-62007-assign-differing-fields.rs", +"ui/nll/issue-63154-normalize.rs", +"ui/nll/issue-67007-escaping-data.rs", +"ui/nll/issue-68550.rs", +"ui/nll/issue-69114-static-mut-ty.rs", +"ui/nll/issue-69114-static-ty.rs", +"ui/nll/issue-73159-rpit-static.rs", +"ui/nll/issue-75777.rs", +"ui/nll/issue-78561.rs", +"ui/nll/issue-95272.rs", +"ui/nll/issue-97997.rs", +"ui/nll/issue-98170.rs", +"ui/nll/issue-98589-closures-relate-named-regions.rs", +"ui/nll/issue-98693.rs", +"ui/nll/polonius/issue-46589.rs", +"ui/nll/relate_tys/issue-48071.rs", +"ui/nll/ty-outlives/issue-53789-1.rs", +"ui/nll/ty-outlives/issue-53789-2.rs", +"ui/nll/ty-outlives/issue-55756.rs", +"ui/nll/user-annotations/issue-54124.rs", +"ui/nll/user-annotations/issue-54570-bootstrapping.rs", +"ui/nll/user-annotations/issue-55219.rs", +"ui/nll/user-annotations/issue-55241.rs", +"ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs", +"ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs", +"ui/numbers-arithmetic/issue-105626.rs", +"ui/numbers-arithmetic/issue-8460-const.rs", +"ui/numbers-arithmetic/issue-8460.rs", +"ui/object-safety/issue-102762.rs", +"ui/object-safety/issue-102933.rs", +"ui/object-safety/issue-106247.rs", +"ui/object-safety/issue-19538.rs", +"ui/on-unimplemented/issue-104140.rs", +"ui/or-patterns/issue-64879-trailing-before-guard.rs", +"ui/or-patterns/issue-67514-irrefutable-param.rs", +"ui/or-patterns/issue-68785-irrefutable-param-with-at.rs", +"ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs", +"ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs", +"ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs", +"ui/overloaded/issue-14958.rs", +"ui/packed/issue-118537-field-offset-ice.rs", +"ui/packed/issue-118537-field-offset.rs", +"ui/packed/issue-27060-2.rs", +"ui/packed/issue-27060.rs", +"ui/packed/issue-46152.rs", +"ui/panics/issue-47429-short-backtraces.rs", +"ui/parser/issue-116781.rs", +"ui/parser/issues/auxiliary/issue-21146-inc.rs", +"ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs", +"ui/parser/issues/auxiliary/issue-94340-inc.rs", +"ui/parser/issues/issue-100197-mut-let.rs", +"ui/parser/issues/issue-101477-enum.rs", +"ui/parser/issues/issue-101477-let.rs", +"ui/parser/issues/issue-101540.rs", +"ui/parser/issues/issue-102182-impl-trait-recover.rs", +"ui/parser/issues/issue-102806.rs", +"ui/parser/issues/issue-103143.rs", +"ui/parser/issues/issue-103381.rs", +"ui/parser/issues/issue-103425.rs", +"ui/parser/issues/issue-103451.rs", +"ui/parser/issues/issue-103748-ICE-wrong-braces.rs", +"ui/parser/issues/issue-10392-2.rs", +"ui/parser/issues/issue-10392.rs", +"ui/parser/issues/issue-104367.rs", +"ui/parser/issues/issue-104620.rs", +"ui/parser/issues/issue-104867-inc-dec-2.rs", +"ui/parser/issues/issue-104867-inc-dec.rs", +"ui/parser/issues/issue-105209.rs", +"ui/parser/issues/issue-105366.rs", +"ui/parser/issues/issue-105634.rs", +"ui/parser/issues/issue-10636-1.rs", +"ui/parser/issues/issue-10636-2.rs", +"ui/parser/issues/issue-107705.rs", +"ui/parser/issues/issue-108109-fn-missing-params.rs", +"ui/parser/issues/issue-108109-fn-trait-missing-paren.rs", +"ui/parser/issues/issue-108242-semicolon-recovery.rs", +"ui/parser/issues/issue-108495-dec.rs", +"ui/parser/issues/issue-110014.rs", +"ui/parser/issues/issue-111148.rs", +"ui/parser/issues/issue-111416.rs", +"ui/parser/issues/issue-111692.rs", +"ui/parser/issues/issue-112188.rs", +"ui/parser/issues/issue-112458.rs", +"ui/parser/issues/issue-113110-non-item-at-module-root.rs", +"ui/parser/issues/issue-113203.rs", +"ui/parser/issues/issue-113342.rs", +"ui/parser/issues/issue-114219.rs", +"ui/parser/issues/issue-115780-pat-lt-bracket-in-macro-call.rs", +"ui/parser/issues/issue-118530-ice.rs", +"ui/parser/issues/issue-118531-ice.rs", +"ui/parser/issues/issue-13483.rs", +"ui/parser/issues/issue-14303-fncall.rs", +"ui/parser/issues/issue-14303.rs", +"ui/parser/issues/issue-15914.rs", +"ui/parser/issues/issue-15980.rs", +"ui/parser/issues/issue-1655.rs", +"ui/parser/issues/issue-17718-const-mut.rs", +"ui/parser/issues/issue-17718-parse-const.rs", +"ui/parser/issues/issue-17904-2.rs", +"ui/parser/issues/issue-17904.rs", +"ui/parser/issues/issue-1802-1.rs", +"ui/parser/issues/issue-1802-2.rs", +"ui/parser/issues/issue-19096.rs", +"ui/parser/issues/issue-19398.rs", +"ui/parser/issues/issue-20616-1.rs", +"ui/parser/issues/issue-20616-2.rs", +"ui/parser/issues/issue-20616-3.rs", +"ui/parser/issues/issue-20616-4.rs", +"ui/parser/issues/issue-20616-5.rs", +"ui/parser/issues/issue-20616-6.rs", +"ui/parser/issues/issue-20616-7.rs", +"ui/parser/issues/issue-20616-8.rs", +"ui/parser/issues/issue-20616-9.rs", +"ui/parser/issues/issue-20711-2.rs", +"ui/parser/issues/issue-20711.rs", +"ui/parser/issues/issue-21146.rs", +"ui/parser/issues/issue-21153.rs", +"ui/parser/issues/issue-21475.rs", +"ui/parser/issues/issue-22647.rs", +"ui/parser/issues/issue-22712.rs", +"ui/parser/issues/issue-2354-1.rs", +"ui/parser/issues/issue-2354.rs", +"ui/parser/issues/issue-23620-invalid-escapes.rs", +"ui/parser/issues/issue-24197.rs", +"ui/parser/issues/issue-24375.rs", +"ui/parser/issues/issue-24780.rs", +"ui/parser/issues/issue-27255.rs", +"ui/parser/issues/issue-30318.rs", +"ui/parser/issues/issue-3036.rs", +"ui/parser/issues/issue-31804.rs", +"ui/parser/issues/issue-32214.rs", +"ui/parser/issues/issue-32446.rs", +"ui/parser/issues/issue-32501.rs", +"ui/parser/issues/issue-32505.rs", +"ui/parser/issues/issue-33262.rs", +"ui/parser/issues/issue-33413.rs", +"ui/parser/issues/issue-33418.rs", +"ui/parser/issues/issue-33455.rs", +"ui/parser/issues/issue-34222-1.rs", +"ui/parser/issues/issue-34255-1.rs", +"ui/parser/issues/issue-35813-postfix-after-cast.rs", +"ui/parser/issues/issue-39616.rs", +"ui/parser/issues/issue-41155.rs", +"ui/parser/issues/issue-43196.rs", +"ui/parser/issues/issue-43692.rs", +"ui/parser/issues/issue-44021.rs", +"ui/parser/issues/issue-44406.rs", +"ui/parser/issues/issue-45296.rs", +"ui/parser/issues/issue-46186.rs", +"ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs", +"ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs", +"ui/parser/issues/issue-48508-aux.rs", +"ui/parser/issues/issue-48508.rs", +"ui/parser/issues/issue-48636.rs", +"ui/parser/issues/issue-49040.rs", +"ui/parser/issues/issue-49257.rs", +"ui/parser/issues/issue-51602.rs", +"ui/parser/issues/issue-52496.rs", +"ui/parser/issues/issue-54521-1.rs", +"ui/parser/issues/issue-54521-2.rs", +"ui/parser/issues/issue-54521-3.rs", +"ui/parser/issues/issue-5544-a.rs", +"ui/parser/issues/issue-5544-b.rs", +"ui/parser/issues/issue-56031.rs", +"ui/parser/issues/issue-57198.rs", +"ui/parser/issues/issue-57684.rs", +"ui/parser/issues/issue-57819.rs", +"ui/parser/issues/issue-5806.rs", +"ui/parser/issues/issue-58094-missing-right-square-bracket.rs", +"ui/parser/issues/issue-58856-1.rs", +"ui/parser/issues/issue-58856-2.rs", +"ui/parser/issues/issue-59418.rs", +"ui/parser/issues/issue-60075.rs", +"ui/parser/issues/issue-61858.rs", +"ui/parser/issues/issue-62524.rs", +"ui/parser/issues/issue-62546.rs", +"ui/parser/issues/issue-62554.rs", +"ui/parser/issues/issue-62660.rs", +"ui/parser/issues/issue-62881.rs", +"ui/parser/issues/issue-62894.rs", +"ui/parser/issues/issue-62895.rs", +"ui/parser/issues/issue-62913.rs", +"ui/parser/issues/issue-62973.rs", +"ui/parser/issues/issue-63115-range-pat-interpolated.rs", +"ui/parser/issues/issue-63116.rs", +"ui/parser/issues/issue-63135.rs", +"ui/parser/issues/issue-64732.rs", +"ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs", +"ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs", +"ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs", +"ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs", +"ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs", +"ui/parser/issues/issue-6610.rs", +"ui/parser/issues/issue-66357-unexpected-unreachable.rs", +"ui/parser/issues/issue-66473.rs", +"ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs", +"ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs", +"ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs", +"ui/parser/issues/issue-68091-unicode-ident-after-if.rs", +"ui/parser/issues/issue-68092-unicode-ident-after-incomplete-expr.rs", +"ui/parser/issues/issue-68629.rs", +"ui/parser/issues/issue-68730.rs", +"ui/parser/issues/issue-68788-in-trait-item-propagation.rs", +"ui/parser/issues/issue-68890-2.rs", +"ui/parser/issues/issue-68890.rs", +"ui/parser/issues/issue-68987-unmatch-issue-1.rs", +"ui/parser/issues/issue-68987-unmatch-issue-2.rs", +"ui/parser/issues/issue-68987-unmatch-issue-3.rs", +"ui/parser/issues/issue-68987-unmatch-issue.rs", +"ui/parser/issues/issue-69259.rs", +"ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs", +"ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs", +"ui/parser/issues/issue-70388-without-witness.rs", +"ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs", +"ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs", +"ui/parser/issues/issue-70583-block-is-empty-1.rs", +"ui/parser/issues/issue-70583-block-is-empty-2.rs", +"ui/parser/issues/issue-7222.rs", +"ui/parser/issues/issue-72253.rs", +"ui/parser/issues/issue-72373.rs", +"ui/parser/issues/issue-73568-lifetime-after-mut.rs", +"ui/parser/issues/issue-75599.rs", +"ui/parser/issues/issue-76437-async.rs", +"ui/parser/issues/issue-76437-const-async-unsafe.rs", +"ui/parser/issues/issue-76437-const-async.rs", +"ui/parser/issues/issue-76437-const.rs", +"ui/parser/issues/issue-76437-pub-crate-unsafe.rs", +"ui/parser/issues/issue-76437-unsafe.rs", +"ui/parser/issues/issue-76597.rs", +"ui/parser/issues/issue-7970b.rs", +"ui/parser/issues/issue-81804.rs", +"ui/parser/issues/issue-81806.rs", +"ui/parser/issues/issue-81827.rs", +"ui/parser/issues/issue-83639.rs", +"ui/parser/issues/issue-84104.rs", +"ui/parser/issues/issue-84117.rs", +"ui/parser/issues/issue-84148-1.rs", +"ui/parser/issues/issue-84148-2.rs", +"ui/parser/issues/issue-8537.rs", +"ui/parser/issues/issue-86895.rs", +"ui/parser/issues/issue-87086-colon-path-sep.rs", +"ui/parser/issues/issue-87197-missing-semicolon.rs", +"ui/parser/issues/issue-87635.rs", +"ui/parser/issues/issue-87694-duplicated-pub.rs", +"ui/parser/issues/issue-87694-misplaced-pub.rs", +"ui/parser/issues/issue-87812-path.rs", +"ui/parser/issues/issue-87812.rs", +"ui/parser/issues/issue-88276-unary-plus.rs", +"ui/parser/issues/issue-88583-union-as-ident.rs", +"ui/parser/issues/issue-88770.rs", +"ui/parser/issues/issue-88818.rs", +"ui/parser/issues/issue-89388.rs", +"ui/parser/issues/issue-89396.rs", +"ui/parser/issues/issue-89574.rs", +"ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs", +"ui/parser/issues/issue-90728.rs", +"ui/parser/issues/issue-90993.rs", +"ui/parser/issues/issue-91421.rs", +"ui/parser/issues/issue-91461.rs", +"ui/parser/issues/issue-93282.rs", +"ui/parser/issues/issue-93867.rs", +"ui/parser/issues/issue-94340.rs", +"ui/parser/issues/issue-98601-delimiter-error-1.rs", +"ui/parser/issues/issue-98601-delimiter-error-unexpected-close.rs", +"ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.rs", +"ui/parser/issues/issue-99910-const-let-mutually-exclusive.rs", +"ui/parser/macro/issue-33569.rs", +"ui/parser/macro/issue-37113.rs", +"ui/parser/macro/issue-37234.rs", +"ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs", +"ui/parser/shebang/issue-71471-ignore-tidy.rs", +"ui/pattern/issue-10392.rs", +"ui/pattern/issue-106552.rs", +"ui/pattern/issue-106862.rs", +"ui/pattern/issue-110508.rs", +"ui/pattern/issue-114896.rs", +"ui/pattern/issue-115599.rs", +"ui/pattern/issue-11577.rs", +"ui/pattern/issue-117626.rs", +"ui/pattern/issue-12582.rs", +"ui/pattern/issue-14221.rs", +"ui/pattern/issue-15080.rs", +"ui/pattern/issue-17718-patterns.rs", +"ui/pattern/issue-22546.rs", +"ui/pattern/issue-27320.rs", +"ui/pattern/issue-28992-empty.rs", +"ui/pattern/issue-52240.rs", +"ui/pattern/issue-6449.rs", +"ui/pattern/issue-66270-pat-struct-parser-recovery.rs", +"ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs", +"ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs", +"ui/pattern/issue-68393-let-pat-assoc-constant.rs", +"ui/pattern/issue-72565.rs", +"ui/pattern/issue-72574-1.rs", +"ui/pattern/issue-72574-2.rs", +"ui/pattern/issue-74539.rs", +"ui/pattern/issue-74702.rs", +"ui/pattern/issue-74954.rs", +"ui/pattern/issue-80186-mut-binding-help-suggestion.rs", +"ui/pattern/issue-8351-1.rs", +"ui/pattern/issue-8351-2.rs", +"ui/pattern/issue-88074-pat-range-type-inference-err.rs", +"ui/pattern/issue-88074-pat-range-type-inference.rs", +"ui/pattern/issue-92074-macro-ice.rs", +"ui/pattern/issue-94866.rs", +"ui/pattern/issue-95878.rs", +"ui/pattern/move-ref-patterns/issue-53840.rs", +"ui/pattern/usefulness/integer-ranges/issue-117648-overlapping_range_endpoints-false-positive.rs", +"ui/pattern/usefulness/issue-105479-str-non-exhaustiveness.rs", +"ui/pattern/usefulness/issue-118437-exponential-time-on-diagonal-match.rs", +"ui/pattern/usefulness/issue-119493-type-error-ice.rs", +"ui/pattern/usefulness/issue-119778-type-error-ice.rs", +"ui/pattern/usefulness/issue-12116.rs", +"ui/pattern/usefulness/issue-12369.rs", +"ui/pattern/usefulness/issue-13727.rs", +"ui/pattern/usefulness/issue-15129.rs", +"ui/pattern/usefulness/issue-2111.rs", +"ui/pattern/usefulness/issue-30240-b.rs", +"ui/pattern/usefulness/issue-30240-rpass.rs", +"ui/pattern/usefulness/issue-30240.rs", +"ui/pattern/usefulness/issue-3096-1.rs", +"ui/pattern/usefulness/issue-3096-2.rs", +"ui/pattern/usefulness/issue-31221.rs", +"ui/pattern/usefulness/issue-31561.rs", +"ui/pattern/usefulness/issue-35609.rs", +"ui/pattern/usefulness/issue-3601.rs", +"ui/pattern/usefulness/issue-39362.rs", +"ui/pattern/usefulness/issue-40221.rs", +"ui/pattern/usefulness/issue-4321.rs", +"ui/pattern/usefulness/issue-50900.rs", +"ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs", +"ui/pattern/usefulness/issue-56379.rs", +"ui/pattern/usefulness/issue-57472.rs", +"ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs", +"ui/pattern/usefulness/issue-66501.rs", +"ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs", +"ui/pattern/usefulness/issue-72377.rs", +"ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs", +"ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs", +"ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs", +"ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs", +"ui/pattern/usefulness/issue-82772-match-box-as-struct.rs", +"ui/pattern/usefulness/issue-85222-types-containing-non-exhaustive-types.rs", +"ui/pattern/usefulness/issue-88747.rs", +"ui/polymorphization/issue-74614.rs", +"ui/polymorphization/issue-74636.rs", +"ui/privacy/auxiliary/issue-117997.rs", +"ui/privacy/auxiliary/issue-119463-extern.rs", +"ui/privacy/auxiliary/issue-17718-const-privacy.rs", +"ui/privacy/auxiliary/issue-57264-1.rs", +"ui/privacy/auxiliary/issue-57264-2.rs", +"ui/privacy/auxiliary/issue-75907.rs", +"ui/privacy/auxiliary/issue-92755.rs", +"ui/privacy/issue-111220-2-tuple-struct-fields-projection.rs", +"ui/privacy/issue-111220-tuple-struct-fields.rs", +"ui/privacy/issue-113860-1.rs", +"ui/privacy/issue-113860-2.rs", +"ui/privacy/issue-113860.rs", +"ui/privacy/issue-11593.rs", +"ui/privacy/issue-117997.rs", +"ui/privacy/issue-119463.rs", +"ui/privacy/issue-13641.rs", +"ui/privacy/issue-17718-const-privacy.rs", +"ui/privacy/issue-29161.rs", +"ui/privacy/issue-30079.rs", +"ui/privacy/issue-46209-private-enum-variant-reexport.rs", +"ui/privacy/issue-57264-1.rs", +"ui/privacy/issue-57264-2.rs", +"ui/privacy/issue-75062-fieldless-tuple-struct.rs", +"ui/privacy/issue-75906.rs", +"ui/privacy/issue-75907.rs", +"ui/privacy/issue-75907_b.rs", +"ui/privacy/issue-79593.rs", +"ui/privacy/issue-92755.rs", +"ui/proc-macro/auxiliary/issue-104884.rs", +"ui/proc-macro/auxiliary/issue-107113.rs", +"ui/proc-macro/auxiliary/issue-118809.rs", +"ui/proc-macro/auxiliary/issue-38586.rs", +"ui/proc-macro/auxiliary/issue-39889.rs", +"ui/proc-macro/auxiliary/issue-42708.rs", +"ui/proc-macro/auxiliary/issue-50061.rs", +"ui/proc-macro/auxiliary/issue-50493.rs", +"ui/proc-macro/auxiliary/issue-59191.rs", +"ui/proc-macro/auxiliary/issue-66286.rs", +"ui/proc-macro/auxiliary/issue-75801.rs", +"ui/proc-macro/auxiliary/issue-79242.rs", +"ui/proc-macro/auxiliary/issue-79825.rs", +"ui/proc-macro/auxiliary/issue-83510.rs", +"ui/proc-macro/auxiliary/issue-91800-macro.rs", +"ui/proc-macro/issue-104884-trait-impl-sugg-err.rs", +"ui/proc-macro/issue-107113-wrap.rs", +"ui/proc-macro/issue-118455-skip-err-builtin.rs", +"ui/proc-macro/issue-118809.rs", +"ui/proc-macro/issue-36935.rs", +"ui/proc-macro/issue-37788.rs", +"ui/proc-macro/issue-38586.rs", +"ui/proc-macro/issue-39889.rs", +"ui/proc-macro/issue-42708.rs", +"ui/proc-macro/issue-50061.rs", +"ui/proc-macro/issue-50493.rs", +"ui/proc-macro/issue-53481.rs", +"ui/proc-macro/issue-59191-replace-root-with-fn.rs", +"ui/proc-macro/issue-66286.rs", +"ui/proc-macro/issue-73933-procedural-masquerade.rs", +"ui/proc-macro/issue-75734-pp-paren.rs", +"ui/proc-macro/issue-75801.rs", +"ui/proc-macro/issue-75930-derive-cfg.rs", +"ui/proc-macro/issue-76182-leading-vert-pat.rs", +"ui/proc-macro/issue-76270-panic-in-libproc-macro.rs", +"ui/proc-macro/issue-78675-captured-inner-attrs.rs", +"ui/proc-macro/issue-79148.rs", +"ui/proc-macro/issue-79242-slow-retokenize-check.rs", +"ui/proc-macro/issue-79825.rs", +"ui/proc-macro/issue-80760-empty-stmt.rs", +"ui/proc-macro/issue-81007-item-attrs.rs", +"ui/proc-macro/issue-81543-item-parse-err.rs", +"ui/proc-macro/issue-81555.rs", +"ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs", +"ui/proc-macro/issue-83510.rs", +"ui/proc-macro/issue-86781-bad-inner-doc.rs", +"ui/proc-macro/issue-89566-suggest-fix-invalid-top-level-macro-attr.rs", +"ui/proc-macro/issue-91800.rs", +"ui/process/issue-13304.rs", +"ui/process/issue-14456.rs", +"ui/process/issue-14940.rs", +"ui/process/issue-16272.rs", +"ui/process/issue-20091.rs", +"ui/ptr_ops/issue-80309-safe.rs", +"ui/ptr_ops/issue-80309.rs", +"ui/pub/issue-33174-restricted-type-in-public-interface.rs", +"ui/query-system/issue-83479.rs", +"ui/range/issue-54505-no-literals.rs", +"ui/range/issue-54505-no-std.rs", +"ui/range/issue-54505.rs", +"ui/range/issue-73553-misinterp-range-literal.rs", +"ui/reachable/auxiliary/issue-11225-1.rs", +"ui/reachable/auxiliary/issue-11225-2.rs", +"ui/reachable/auxiliary/issue-11225-3.rs", +"ui/reachable/issue-11225-1.rs", +"ui/reachable/issue-11225-2.rs", +"ui/reachable/issue-11225-3.rs", +"ui/reachable/issue-948.rs", +"ui/recursion/issue-26548-recursion-via-normalize.rs", +"ui/recursion/issue-38591-non-regular-dropck-recursion.rs", +"ui/recursion/issue-83150.rs", +"ui/recursion/issue-86784.rs", +"ui/recursion/issue-95134.rs", +"ui/recursion_limit/issue-105700.rs", +"ui/recursion_limit/issue-40003.rs", +"ui/regions/issue-101280.rs", +"ui/regions/issue-102374.rs", +"ui/regions/issue-102392.rs", +"ui/regions/issue-11612.rs", +"ui/regions/issue-12470.rs", +"ui/regions/issue-21520.rs", +"ui/regions/issue-24085.rs", +"ui/regions/issue-26448-1.rs", +"ui/regions/issue-26448-2.rs", +"ui/regions/issue-26448-3.rs", +"ui/regions/issue-28848.rs", +"ui/regions/issue-5243.rs", +"ui/regions/issue-56537-closure-uses-region-from-container.rs", +"ui/regions/issue-6157.rs", +"ui/regions/issue-72051-member-region-hang.rs", +"ui/regions/issue-78262.rs", +"ui/repr/issue-83505-repr-simd.rs", +"ui/resolve/auxiliary/issue-112831-aux.rs", +"ui/resolve/auxiliary/issue-19452-aux.rs", +"ui/resolve/auxiliary/issue-21221-3.rs", +"ui/resolve/auxiliary/issue-21221-4.rs", +"ui/resolve/auxiliary/issue-30535.rs", +"ui/resolve/auxiliary/issue-3907.rs", +"ui/resolve/auxiliary/issue-80079.rs", +"ui/resolve/issue-100365.rs", +"ui/resolve/issue-101749-2.rs", +"ui/resolve/issue-101749.rs", +"ui/resolve/issue-10200.rs", +"ui/resolve/issue-102946.rs", +"ui/resolve/issue-103202.rs", +"ui/resolve/issue-103474.rs", +"ui/resolve/issue-104700-inner_scope.rs", +"ui/resolve/issue-105069.rs", +"ui/resolve/issue-107563-ambiguous-glob-reexports.rs", +"ui/resolve/issue-108529.rs", +"ui/resolve/issue-109153.rs", +"ui/resolve/issue-109250.rs", +"ui/resolve/issue-111312.rs", +"ui/resolve/issue-111727.rs", +"ui/resolve/issue-112472-multi-generics-suggestion.rs", +"ui/resolve/issue-113808-invalid-unused-qualifications-suggestion.rs", +"ui/resolve/issue-114433-invalid-unused-qualifications-suggestion.rs", +"ui/resolve/issue-116164.rs", +"ui/resolve/issue-117920.rs", +"ui/resolve/issue-118295.rs", +"ui/resolve/issue-120559.rs", +"ui/resolve/issue-12796.rs", +"ui/resolve/issue-14254.rs", +"ui/resolve/issue-16058.rs", +"ui/resolve/issue-17518.rs", +"ui/resolve/issue-18252.rs", +"ui/resolve/issue-19452.rs", +"ui/resolve/issue-21221-1.rs", +"ui/resolve/issue-21221-2.rs", +"ui/resolve/issue-21221-3.rs", +"ui/resolve/issue-21221-4.rs", +"ui/resolve/issue-22692.rs", +"ui/resolve/issue-2330.rs", +"ui/resolve/issue-23305.rs", +"ui/resolve/issue-2356.rs", +"ui/resolve/issue-23716.rs", +"ui/resolve/issue-24968.rs", +"ui/resolve/issue-26545.rs", +"ui/resolve/issue-3021-c.rs", +"ui/resolve/issue-3021.rs", +"ui/resolve/issue-30535.rs", +"ui/resolve/issue-3099-a.rs", +"ui/resolve/issue-3099-b.rs", +"ui/resolve/issue-31845.rs", +"ui/resolve/issue-33876.rs", +"ui/resolve/issue-35675.rs", +"ui/resolve/issue-3907-2.rs", +"ui/resolve/issue-3907.rs", +"ui/resolve/issue-39226.rs", +"ui/resolve/issue-39559-2.rs", +"ui/resolve/issue-39559.rs", +"ui/resolve/issue-42944.rs", +"ui/resolve/issue-49074.rs", +"ui/resolve/issue-5035-2.rs", +"ui/resolve/issue-5035.rs", +"ui/resolve/issue-50599.rs", +"ui/resolve/issue-5099.rs", +"ui/resolve/issue-54379.rs", +"ui/resolve/issue-55673.rs", +"ui/resolve/issue-57523.rs", +"ui/resolve/issue-5927.rs", +"ui/resolve/issue-60057.rs", +"ui/resolve/issue-65025-extern-static-parent-generics.rs", +"ui/resolve/issue-65035-static-with-parent-generics.rs", +"ui/resolve/issue-6642.rs", +"ui/resolve/issue-6702.rs", +"ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs", +"ui/resolve/issue-70736-async-fn-no-body-def-collector.rs", +"ui/resolve/issue-73427.rs", +"ui/resolve/issue-80079.rs", +"ui/resolve/issue-81508.rs", +"ui/resolve/issue-82156.rs", +"ui/resolve/issue-82865.rs", +"ui/resolve/issue-85348.rs", +"ui/resolve/issue-85671.rs", +"ui/resolve/issue-88472.rs", +"ui/resolve/issue-90113.rs", +"ui/return/issue-64620.rs", +"ui/return/issue-82612-return-mutable-reference.rs", +"ui/return/issue-86188-return-not-in-fn-body.rs", +"ui/rfcs/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs", +"ui/rfcs/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs", +"ui/rfcs/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs", +"ui/rfcs/rfc-1445-restrict-constants-in-patterns/issue-6804-nan-match.rs", +"ui/rfcs/rfc-1937-termination-trait/issue-103052-1.rs", +"ui/rfcs/rfc-1937-termination-trait/issue-103052-2.rs", +"ui/rfcs/rfc-2005-default-binding-mode/issue-44912-or.rs", +"ui/rfcs/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs", +"ui/rfcs/rfc-2093-infer-outlives/issue-54467.rs", +"ui/rfcs/rfc-2396-target_feature-11/issue-108645-target-feature-on-main.rs", +"ui/rfcs/rfc-2396-target_feature-11/issue-108645-target-feature-on-start.rs", +"ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs", +"ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs", +"ui/rfcs/rfc-2497-if-let-chains/issue-88498.rs", +"ui/rfcs/rfc-2497-if-let-chains/issue-90722.rs", +"ui/rfcs/rfc-2497-if-let-chains/issue-92145.rs", +"ui/rfcs/rfc-2497-if-let-chains/issue-93150.rs", +"ui/rfcs/rfc-2497-if-let-chains/issue-99938.rs", +"ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs", +"ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs", +"ui/rfcs/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-102156.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-102985.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-103677.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-79450.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-88155.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-92111.rs", +"ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs", +"ui/rfcs/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs", +"ui/rfcs/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs", +"ui/rust-2018/issue-51008-1.rs", +"ui/rust-2018/issue-51008.rs", +"ui/rust-2018/issue-52202-use-suggestions.rs", +"ui/rust-2018/issue-54006.rs", +"ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs", +"ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs", +"ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs", +"ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs", +"ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs", +"ui/rust-2018/uniform-paths/issue-54253.rs", +"ui/rust-2018/uniform-paths/issue-55779.rs", +"ui/rust-2018/uniform-paths/issue-56596-2.rs", +"ui/rust-2018/uniform-paths/issue-56596.rs", +"ui/rust-2018/uniform-paths/issue-87932.rs", +"ui/sanitize/issue-111184-coroutine-witness.rs", +"ui/sanitize/issue-114275-cfi-const-expr-in-arry-len.rs", +"ui/sanitize/issue-72154-lifetime-markers.rs", +"ui/self/issue-61882-2.rs", +"ui/self/issue-61882.rs", +"ui/simd/intrinsic/issue-85855.rs", +"ui/simd/issue-105439.rs", +"ui/simd/issue-17170.rs", +"ui/simd/issue-32947.rs", +"ui/simd/issue-39720.rs", +"ui/simd/issue-85915-simd-ptrs.rs", +"ui/simd/issue-89193.rs", +"ui/single-use-lifetime/issue-104440.rs", +"ui/single-use-lifetime/issue-107998.rs", +"ui/single-use-lifetime/issue-117965.rs", +"ui/span/issue-107353.rs", +"ui/span/issue-11925.rs", +"ui/span/issue-15480.rs", +"ui/span/issue-23338-locals-die-before-temps-of-body.rs", +"ui/span/issue-23729.rs", +"ui/span/issue-23827.rs", +"ui/span/issue-24356.rs", +"ui/span/issue-24690.rs", +"ui/span/issue-24805-dropck-child-has-items-via-parent.rs", +"ui/span/issue-24805-dropck-trait-has-items.rs", +"ui/span/issue-24895-copy-clone-dropck.rs", +"ui/span/issue-25199.rs", +"ui/span/issue-26656.rs", +"ui/span/issue-27522.rs", +"ui/span/issue-29106.rs", +"ui/span/issue-29595.rs", +"ui/span/issue-33884.rs", +"ui/span/issue-34264.rs", +"ui/span/issue-35987.rs", +"ui/span/issue-36537.rs", +"ui/span/issue-37767.rs", +"ui/span/issue-39018.rs", +"ui/span/issue-39698.rs", +"ui/span/issue-40157.rs", +"ui/span/issue-42234-unknown-receiver-type.rs", +"ui/span/issue-43927-non-ADT-derive.rs", +"ui/span/issue-71363.rs", +"ui/span/issue-81800.rs", +"ui/span/issue28498-reject-ex1.rs", +"ui/span/issue28498-reject-lifetime-param.rs", +"ui/span/issue28498-reject-passed-to-fn.rs", +"ui/span/issue28498-reject-trait-bound.rs", +"ui/specialization/issue-111232.rs", +"ui/specialization/issue-33017.rs", +"ui/specialization/issue-35376.rs", +"ui/specialization/issue-36804.rs", +"ui/specialization/issue-38091-2.rs", +"ui/specialization/issue-38091.rs", +"ui/specialization/issue-39448.rs", +"ui/specialization/issue-39618.rs", +"ui/specialization/issue-40582.rs", +"ui/specialization/issue-43037.rs", +"ui/specialization/issue-44861.rs", +"ui/specialization/issue-45814.rs", +"ui/specialization/issue-50452-fail.rs", +"ui/specialization/issue-50452.rs", +"ui/specialization/issue-51892.rs", +"ui/specialization/issue-52050.rs", +"ui/specialization/issue-59435.rs", +"ui/specialization/issue-63716-parse-async.rs", +"ui/specialization/issue-68830-spurious-diagnostics.rs", +"ui/specialization/issue-70442.rs", +"ui/specialization/min_specialization/issue-79224.rs", +"ui/stability-attribute/issue-106589.rs", +"ui/stability-attribute/issue-109177.rs", +"ui/stability-attribute/issue-28075.rs", +"ui/stability-attribute/issue-28388-3.rs", +"ui/stability-attribute/issue-99286-stable-intrinsics.rs", +"ui/static/auxiliary/issue_24843.rs", +"ui/static/issue-18118-2.rs", +"ui/static/issue-18118.rs", +"ui/static/issue-24843.rs", +"ui/static/issue-34194.rs", +"ui/static/issue-5216.rs", +"ui/statics/issue-14227.rs", +"ui/statics/issue-15261.rs", +"ui/statics/issue-17233.rs", +"ui/statics/issue-17718-static-sync.rs", +"ui/statics/issue-17718-static-unsafe-interior.rs", +"ui/statics/issue-44373-2.rs", +"ui/statics/issue-44373.rs", +"ui/statics/issue-91050-1.rs", +"ui/statics/issue-91050-2.rs", +"ui/std/issue-81357-unsound-file-methods.rs", +"ui/stdlib-unit-tests/issue-21058.rs", +"ui/structs-enums/enum-rec/issue-17431-6.rs", +"ui/structs-enums/enum-rec/issue-17431-7.rs", +"ui/structs-enums/issue-103869.rs", +"ui/structs-enums/issue-1701.rs", +"ui/structs-enums/issue-2718-a.rs", +"ui/structs-enums/issue-3008-1.rs", +"ui/structs-enums/issue-3008-2.rs", +"ui/structs-enums/issue-3008-3.rs", +"ui/structs-enums/issue-38002.rs", +"ui/structs-enums/issue-50731.rs", +"ui/structs-enums/struct-rec/issue-17431-1.rs", +"ui/structs-enums/struct-rec/issue-17431-2.rs", +"ui/structs-enums/struct-rec/issue-17431-3.rs", +"ui/structs-enums/struct-rec/issue-17431-4.rs", +"ui/structs-enums/struct-rec/issue-17431-5.rs", +"ui/structs-enums/struct-rec/issue-74224.rs", +"ui/structs-enums/struct-rec/issue-84611.rs", +"ui/structs/issue-80853.rs", +"ui/suggestions/auxiliary/issue-61963-1.rs", +"ui/suggestions/auxiliary/issue-61963.rs", +"ui/suggestions/auxiliary/issue-81839.rs", +"ui/suggestions/issue-101065.rs", +"ui/suggestions/issue-101421.rs", +"ui/suggestions/issue-101465.rs", +"ui/suggestions/issue-101623.rs", +"ui/suggestions/issue-101984.rs", +"ui/suggestions/issue-102354.rs", +"ui/suggestions/issue-102892.rs", +"ui/suggestions/issue-102972.rs", +"ui/suggestions/issue-103112.rs", +"ui/suggestions/issue-103646.rs", +"ui/suggestions/issue-104086-suggest-let.rs", +"ui/suggestions/issue-104287.rs", +"ui/suggestions/issue-104327.rs", +"ui/suggestions/issue-104328.rs", +"ui/suggestions/issue-104961.rs", +"ui/suggestions/issue-105226.rs", +"ui/suggestions/issue-105494.rs", +"ui/suggestions/issue-105645.rs", +"ui/suggestions/issue-105761-suggest-self-for-closure.rs", +"ui/suggestions/issue-106443-sugg-clone-for-arg.rs", +"ui/suggestions/issue-106443-sugg-clone-for-bound.rs", +"ui/suggestions/issue-107860.rs", +"ui/suggestions/issue-108470.rs", +"ui/suggestions/issue-109195.rs", +"ui/suggestions/issue-109291.rs", +"ui/suggestions/issue-109396.rs", +"ui/suggestions/issue-109436.rs", +"ui/suggestions/issue-109854.rs", +"ui/suggestions/issue-109991.rs", +"ui/suggestions/issue-112590-suggest-import.rs", +"ui/suggestions/issue-114701.rs", +"ui/suggestions/issue-114797-bad-parentheses-dyn-trait.rs", +"ui/suggestions/issue-116434-2015.rs", +"ui/suggestions/issue-116434-2021.rs", +"ui/suggestions/issue-117669.rs", +"ui/suggestions/issue-21673.rs", +"ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs", +"ui/suggestions/issue-52820.rs", +"ui/suggestions/issue-53692.rs", +"ui/suggestions/issue-57672.rs", +"ui/suggestions/issue-59819.rs", +"ui/suggestions/issue-61226.rs", +"ui/suggestions/issue-61963.rs", +"ui/suggestions/issue-62843.rs", +"ui/suggestions/issue-64252-self-type.rs", +"ui/suggestions/issue-66968-suggest-sorted-words.rs", +"ui/suggestions/issue-68049-1.rs", +"ui/suggestions/issue-68049-2.rs", +"ui/suggestions/issue-71394-no-from-impl.rs", +"ui/suggestions/issue-72766.rs", +"ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs", +"ui/suggestions/issue-81098.rs", +"ui/suggestions/issue-81839.rs", +"ui/suggestions/issue-82361.rs", +"ui/suggestions/issue-82566-1.rs", +"ui/suggestions/issue-82566-2.rs", +"ui/suggestions/issue-83892.rs", +"ui/suggestions/issue-83943.rs", +"ui/suggestions/issue-84592.rs", +"ui/suggestions/issue-84700.rs", +"ui/suggestions/issue-84973-2.rs", +"ui/suggestions/issue-84973-blacklist.rs", +"ui/suggestions/issue-84973-negative.rs", +"ui/suggestions/issue-84973.rs", +"ui/suggestions/issue-85347.rs", +"ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs", +"ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs", +"ui/suggestions/issue-86100-tuple-paren-comma.rs", +"ui/suggestions/issue-86667.rs", +"ui/suggestions/issue-88696.rs", +"ui/suggestions/issue-88730.rs", +"ui/suggestions/issue-89064.rs", +"ui/suggestions/issue-89333.rs", +"ui/suggestions/issue-89640.rs", +"ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs", +"ui/suggestions/issue-90974.rs", +"ui/suggestions/issue-94171.rs", +"ui/suggestions/issue-96223.rs", +"ui/suggestions/issue-96555.rs", +"ui/suggestions/issue-97677.rs", +"ui/suggestions/issue-97704.rs", +"ui/suggestions/issue-97760.rs", +"ui/suggestions/issue-98500.rs", +"ui/suggestions/issue-98562.rs", +"ui/suggestions/issue-99080.rs", +"ui/suggestions/issue-99240-2.rs", +"ui/suggestions/issue-99240.rs", +"ui/suggestions/issue-99597.rs", +"ui/suggestions/lifetimes/issue-105544.rs", +"ui/symbol-names/issue-53912.rs", +"ui/symbol-names/issue-60925.rs", +"ui/symbol-names/issue-75326.rs", +"ui/symbol-names/issue-76365.rs", +"ui/test-attrs/custom-test-frameworks/issue-107454.rs", +"ui/test-attrs/issue-109816.rs", +"ui/test-attrs/issue-12997-1.rs", +"ui/test-attrs/issue-12997-2.rs", +"ui/test-attrs/issue-16597-empty.rs", +"ui/test-attrs/issue-16597.rs", +"ui/test-attrs/issue-20823.rs", +"ui/test-attrs/issue-34932.rs", +"ui/test-attrs/issue-36768.rs", +"ui/test-attrs/issue-52557.rs", +"ui/test-attrs/issue-53675-a-test-called-panic.rs", +"ui/threads-sendsync/issue-24313.rs", +"ui/threads-sendsync/issue-29488.rs", +"ui/threads-sendsync/issue-43733-2.rs", +"ui/threads-sendsync/issue-43733.rs", +"ui/threads-sendsync/issue-4446.rs", +"ui/threads-sendsync/issue-4448.rs", +"ui/threads-sendsync/issue-8827.rs", +"ui/threads-sendsync/issue-9396.rs", +"ui/trait-bounds/issue-119530-sugg-from-fn.rs", +"ui/trait-bounds/issue-75961.rs", +"ui/trait-bounds/issue-82038.rs", +"ui/trait-bounds/issue-93008.rs", +"ui/trait-bounds/issue-94680.rs", +"ui/trait-bounds/issue-94999.rs", +"ui/trait-bounds/issue-95640.rs", +"ui/traits/alias/issue-107747-do-not-assemble-supertraits.rs", +"ui/traits/alias/issue-108072-unmet-trait-alias-bound.rs", +"ui/traits/alias/issue-108132-unmet-trait-alias-bound-on-generic-impl.rs", +"ui/traits/alias/issue-60021-assoc-method-resolve.rs", +"ui/traits/alias/issue-60755.rs", +"ui/traits/alias/issue-72415-assoc-const-resolve.rs", +"ui/traits/alias/issue-75983.rs", +"ui/traits/alias/issue-83613.rs", +"ui/traits/associated_type_bound/issue-51446.rs", +"ui/traits/auxiliary/issue_89119_intercrate_caching.rs", +"ui/traits/issue-103563.rs", +"ui/traits/issue-104322.rs", +"ui/traits/issue-105231.rs", +"ui/traits/issue-106072.rs", +"ui/traits/issue-117794.rs", +"ui/traits/issue-18400.rs", +"ui/traits/issue-18412.rs", +"ui/traits/issue-20692.rs", +"ui/traits/issue-22019.rs", +"ui/traits/issue-22110.rs", +"ui/traits/issue-22384.rs", +"ui/traits/issue-22655.rs", +"ui/traits/issue-23003-overflow.rs", +"ui/traits/issue-23003.rs", +"ui/traits/issue-23825.rs", +"ui/traits/issue-24010.rs", +"ui/traits/issue-26339.rs", +"ui/traits/issue-28576.rs", +"ui/traits/issue-32963.rs", +"ui/traits/issue-33096.rs", +"ui/traits/issue-33140-hack-boundaries.rs", +"ui/traits/issue-33140.rs", +"ui/traits/issue-35869.rs", +"ui/traits/issue-3683.rs", +"ui/traits/issue-38033.rs", +"ui/traits/issue-38404.rs", +"ui/traits/issue-38604.rs", +"ui/traits/issue-3973.rs", +"ui/traits/issue-40085.rs", +"ui/traits/issue-4107.rs", +"ui/traits/issue-43132.rs", +"ui/traits/issue-43784-supertrait.rs", +"ui/traits/issue-5008-borrowed-traitobject-method-call.rs", +"ui/traits/issue-50480.rs", +"ui/traits/issue-52893.rs", +"ui/traits/issue-56202.rs", +"ui/traits/issue-56488.rs", +"ui/traits/issue-58344.rs", +"ui/traits/issue-59029-1.rs", +"ui/traits/issue-59029-2.rs", +"ui/traits/issue-6128.rs", +"ui/traits/issue-6334.rs", +"ui/traits/issue-65284-suggest-generic-trait-bound.rs", +"ui/traits/issue-65673.rs", +"ui/traits/issue-66768.rs", +"ui/traits/issue-68295.rs", +"ui/traits/issue-7013.rs", +"ui/traits/issue-70944.rs", +"ui/traits/issue-71036.rs", +"ui/traits/issue-71136.rs", +"ui/traits/issue-72410.rs", +"ui/traits/issue-72455.rs", +"ui/traits/issue-75627.rs", +"ui/traits/issue-77982.rs", +"ui/traits/issue-78372.rs", +"ui/traits/issue-78632.rs", +"ui/traits/issue-79458.rs", +"ui/traits/issue-8153.rs", +"ui/traits/issue-82830.rs", +"ui/traits/issue-83538-tainted-cache-after-cycle.rs", +"ui/traits/issue-84399-bad-fresh-caching.rs", +"ui/traits/issue-85360-eval-obligation-ice.rs", +"ui/traits/issue-85735.rs", +"ui/traits/issue-87558.rs", +"ui/traits/issue-89119.rs", +"ui/traits/issue-90195-2.rs", +"ui/traits/issue-90195.rs", +"ui/traits/issue-90662-projection-caching.rs", +"ui/traits/issue-91594.rs", +"ui/traits/issue-91949-hangs-on-recursion.rs", +"ui/traits/issue-92292.rs", +"ui/traits/issue-9394-inherited-calls.rs", +"ui/traits/issue-95311.rs", +"ui/traits/issue-95898.rs", +"ui/traits/issue-96664.rs", +"ui/traits/issue-96665.rs", +"ui/traits/issue-97576.rs", +"ui/traits/issue-97695-double-trivial-bound.rs", +"ui/traits/issue-99875.rs", +"ui/traits/next-solver/coherence/issue-102048.rs", +"ui/traits/next-solver/issue-118950-root-region.rs", +"ui/traits/object/issue-33140-traitobject-crate.rs", +"ui/traits/object/issue-44454-1.rs", +"ui/traits/object/issue-44454-2.rs", +"ui/traits/object/issue-44454-3.rs", +"ui/traits/suggest-dereferences/issue-39029.rs", +"ui/traits/suggest-dereferences/issue-62530.rs", +"ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs", +"ui/traits/trait-upcasting/issue-11515.rs", +"ui/traits/vtable/issue-91807.rs", +"ui/traits/vtable/issue-97381.rs", +"ui/transmutability/arrays/issue-103783-array-length.rs", +"ui/transmutability/issue-101739-1.rs", +"ui/transmutability/issue-101739-2.rs", +"ui/transmutability/issue-110467.rs", +"ui/transmutability/issue-110892.rs", +"ui/transmute/issue-115402-overflow-size.rs", +"ui/trivial-bounds/issue-73021-impossible-inline.rs", +"ui/try-block/issue-45124.rs", +"ui/try-trait/issue-32709.rs", +"ui/type-alias-enum-variants/issue-57866.rs", +"ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs", +"ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs", +"ui/type-alias-impl-trait/issue-101750.rs", +"ui/type-alias-impl-trait/issue-104817.rs", +"ui/type-alias-impl-trait/issue-109054.rs", +"ui/type-alias-impl-trait/issue-52843-closure-constrain.rs", +"ui/type-alias-impl-trait/issue-52843.rs", +"ui/type-alias-impl-trait/issue-53092-2.rs", +"ui/type-alias-impl-trait/issue-53092.rs", +"ui/type-alias-impl-trait/issue-53096.rs", +"ui/type-alias-impl-trait/issue-53398-cyclic-types.rs", +"ui/type-alias-impl-trait/issue-53598.rs", +"ui/type-alias-impl-trait/issue-53678-coroutine-and-const-fn.rs", +"ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs", +"ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs", +"ui/type-alias-impl-trait/issue-57611-trait-alias.rs", +"ui/type-alias-impl-trait/issue-57700.rs", +"ui/type-alias-impl-trait/issue-57807-associated-type.rs", +"ui/type-alias-impl-trait/issue-57961.rs", +"ui/type-alias-impl-trait/issue-58662-coroutine-with-lifetime.rs", +"ui/type-alias-impl-trait/issue-58662-simplified.rs", +"ui/type-alias-impl-trait/issue-58887.rs", +"ui/type-alias-impl-trait/issue-58951-2.rs", +"ui/type-alias-impl-trait/issue-58951.rs", +"ui/type-alias-impl-trait/issue-60371.rs", +"ui/type-alias-impl-trait/issue-60407.rs", +"ui/type-alias-impl-trait/issue-60564-working.rs", +"ui/type-alias-impl-trait/issue-60564.rs", +"ui/type-alias-impl-trait/issue-60662.rs", +"ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs", +"ui/type-alias-impl-trait/issue-63263-closure-return.rs", +"ui/type-alias-impl-trait/issue-63279.rs", +"ui/type-alias-impl-trait/issue-63355.rs", +"ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs", +"ui/type-alias-impl-trait/issue-65384.rs", +"ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs", +"ui/type-alias-impl-trait/issue-65918.rs", +"ui/type-alias-impl-trait/issue-66580-closure-coherence.rs", +"ui/type-alias-impl-trait/issue-67844-nested-opaque.rs", +"ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs", +"ui/type-alias-impl-trait/issue-68368-non-defining-use.rs", +"ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs", +"ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs", +"ui/type-alias-impl-trait/issue-69323.rs", +"ui/type-alias-impl-trait/issue-70121.rs", +"ui/type-alias-impl-trait/issue-72793.rs", +"ui/type-alias-impl-trait/issue-74244.rs", +"ui/type-alias-impl-trait/issue-74280.rs", +"ui/type-alias-impl-trait/issue-74761-2.rs", +"ui/type-alias-impl-trait/issue-74761.rs", +"ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs", +"ui/type-alias-impl-trait/issue-77179.rs", +"ui/type-alias-impl-trait/issue-78450.rs", +"ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs", +"ui/type-alias-impl-trait/issue-84660-unsoundness.rs", +"ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs", +"ui/type-alias-impl-trait/issue-89686.rs", +"ui/type-alias-impl-trait/issue-89952.rs", +"ui/type-alias-impl-trait/issue-90400-1.rs", +"ui/type-alias-impl-trait/issue-90400-2.rs", +"ui/type-alias-impl-trait/issue-93411.rs", +"ui/type-alias-impl-trait/issue-94429.rs", +"ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs", +"ui/type-alias-impl-trait/issue-96572-unconstrained.rs", +"ui/type-alias-impl-trait/issue-98604.rs", +"ui/type-alias-impl-trait/issue-98608.rs", +"ui/type-alias/issue-14933.rs", +"ui/type-alias/issue-37515.rs", +"ui/type-alias/issue-62263-self-in-atb.rs", +"ui/type-alias/issue-62305-self-assoc-ty.rs", +"ui/type-alias/issue-62364-self-ty-arg.rs", +"ui/type-inference/issue-113283-alllocator-trait-eq.rs", +"ui/type-inference/issue-30225.rs", +"ui/type/ascription/issue-34255-1.rs", +"ui/type/ascription/issue-47666.rs", +"ui/type/ascription/issue-54516.rs", +"ui/type/ascription/issue-60933.rs", +"ui/type/issue-100584.rs", +"ui/type/issue-101866.rs", +"ui/type/issue-102598.rs", +"ui/type/issue-103271.rs", +"ui/type/issue-58355.rs", +"ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs", +"ui/type/issue-91268.rs", +"ui/type/issue-94187-verbose-type-name.rs", +"ui/type/type-check/issue-116967-cannot-coerce-returned-result.rs", +"ui/type/type-check/issue-22897.rs", +"ui/type/type-check/issue-40294.rs", +"ui/type/type-check/issue-41314.rs", +"ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs", +"ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs", +"ui/typeck/auxiliary/issue-29181.rs", +"ui/typeck/auxiliary/issue-36708.rs", +"ui/typeck/auxiliary/issue-81943-lib.rs", +"ui/typeck/issue-100164.rs", +"ui/typeck/issue-100246.rs", +"ui/typeck/issue-100285.rs", +"ui/typeck/issue-103899.rs", +"ui/typeck/issue-10401.rs", +"ui/typeck/issue-104510-ice.rs", +"ui/typeck/issue-104513-ice.rs", +"ui/typeck/issue-104582.rs", +"ui/typeck/issue-105946.rs", +"ui/typeck/issue-106929.rs", +"ui/typeck/issue-107087.rs", +"ui/typeck/issue-107775.rs", +"ui/typeck/issue-10969.rs", +"ui/typeck/issue-110017-format-into-help-deletes-macro.rs", +"ui/typeck/issue-110052.rs", +"ui/typeck/issue-112007-leaked-writeln-macro-internals.rs", +"ui/typeck/issue-112252-ptr-arithmetics-help.rs", +"ui/typeck/issue-112385-while-assign-lhs-place-expr-ice.rs", +"ui/typeck/issue-114423-ice-regression-in-suggestion.rs", +"ui/typeck/issue-114529-illegal-break-with-value.rs", +"ui/typeck/issue-116473-ice-wrong-span-variant-args.rs", +"ui/typeck/issue-116864.rs", +"ui/typeck/issue-120856.rs", +"ui/typeck/issue-13853-2.rs", +"ui/typeck/issue-13853-5.rs", +"ui/typeck/issue-13853.rs", +"ui/typeck/issue-16338.rs", +"ui/typeck/issue-1871.rs", +"ui/typeck/issue-18937-1.rs", +"ui/typeck/issue-18937.rs", +"ui/typeck/issue-2063-resource.rs", +"ui/typeck/issue-2063.rs", +"ui/typeck/issue-22375.rs", +"ui/typeck/issue-29124.rs", +"ui/typeck/issue-29181.rs", +"ui/typeck/issue-31173.rs", +"ui/typeck/issue-33575.rs", +"ui/typeck/issue-36708.rs", +"ui/typeck/issue-43189.rs", +"ui/typeck/issue-46112.rs", +"ui/typeck/issue-50687-ice-on-borrow.rs", +"ui/typeck/issue-52082-type-param-shadows-existing-type.rs", +"ui/typeck/issue-53712.rs", +"ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs", +"ui/typeck/issue-57404.rs", +"ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs", +"ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs", +"ui/typeck/issue-65611.rs", +"ui/typeck/issue-67971.rs", +"ui/typeck/issue-68590-reborrow-through-derefmut.rs", +"ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs", +"ui/typeck/issue-72225-call-fnmut-through-derefmut.rs", +"ui/typeck/issue-73592-borrow_mut-through-deref.rs", +"ui/typeck/issue-74086.rs", +"ui/typeck/issue-74933.rs", +"ui/typeck/issue-75883.rs", +"ui/typeck/issue-75889.rs", +"ui/typeck/issue-7813.rs", +"ui/typeck/issue-79040.rs", +"ui/typeck/issue-80207-unsized-return.rs", +"ui/typeck/issue-80779.rs", +"ui/typeck/issue-81293.rs", +"ui/typeck/issue-81885.rs", +"ui/typeck/issue-81943.rs", +"ui/typeck/issue-82772.rs", +"ui/typeck/issue-83621-placeholder-static-in-extern.rs", +"ui/typeck/issue-83693.rs", +"ui/typeck/issue-84160.rs", +"ui/typeck/issue-84768.rs", +"ui/typeck/issue-84831.rs", +"ui/typeck/issue-86721-return-expr-ice.rs", +"ui/typeck/issue-87771-ice-assign-assign-to-bool.rs", +"ui/typeck/issue-87872-missing-inaccessible-field-literal.rs", +"ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs", +"ui/typeck/issue-88609.rs", +"ui/typeck/issue-88643.rs", +"ui/typeck/issue-88803-call-expr-method.rs", +"ui/typeck/issue-88844.rs", +"ui/typeck/issue-89044-wrapped-expr-method.rs", +"ui/typeck/issue-89275.rs", +"ui/typeck/issue-89806.rs", +"ui/typeck/issue-89856.rs", +"ui/typeck/issue-89935.rs", +"ui/typeck/issue-90027-async-fn-return-suggestion.rs", +"ui/typeck/issue-90101.rs", +"ui/typeck/issue-90164.rs", +"ui/typeck/issue-90319.rs", +"ui/typeck/issue-90483-inaccessible-field-adjustment.rs", +"ui/typeck/issue-90804-incorrect-reference-suggestion.rs", +"ui/typeck/issue-91210-ptr-method.rs", +"ui/typeck/issue-91267.rs", +"ui/typeck/issue-91328.rs", +"ui/typeck/issue-91334.rs", +"ui/typeck/issue-91450-inner-ty-error.rs", +"ui/typeck/issue-91633.rs", +"ui/typeck/issue-92481.rs", +"ui/typeck/issue-93486.rs", +"ui/typeck/issue-96530.rs", +"ui/typeck/issue-96738.rs", +"ui/typeck/issue-98260.rs", +"ui/typeck/issue-98982.rs", +"ui/typeof/issue-100183.rs", +"ui/typeof/issue-29184.rs", +"ui/typeof/issue-42060.rs", +"ui/unboxed-closures/issue-18652.rs", +"ui/unboxed-closures/issue-18661.rs", +"ui/unboxed-closures/issue-30906.rs", +"ui/unboxed-closures/issue-53448.rs", +"ui/underscore-imports/issue-110164.rs", +"ui/uniform-paths/auxiliary/issue-53691.rs", +"ui/uniform-paths/issue-53691.rs", +"ui/uninhabited/issue-107505.rs", +"ui/union/issue-41073.rs", +"ui/union/issue-81199.rs", +"ui/union/issue-99375.rs", +"ui/unsafe/auxiliary/issue-106126.rs", +"ui/unsafe/issue-106126-good-path-bug.rs", +"ui/unsafe/issue-115348-false-positive-warning-of-unnecessary-unsafe.rs", +"ui/unsafe/issue-3080.rs", +"ui/unsafe/issue-45087-unreachable-unsafe.rs", +"ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs", +"ui/unsafe/issue-47412.rs", +"ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs", +"ui/unsafe/issue-87414-query-cycle.rs", +"ui/unsized-locals/issue-30276-feature-flagged.rs", +"ui/unsized-locals/issue-30276.rs", +"ui/unsized-locals/issue-50940-with-feature.rs", +"ui/unsized-locals/issue-50940.rs", +"ui/unsized-locals/issue-67981.rs", +"ui/unsized/issue-115203.rs", +"ui/unsized/issue-115809.rs", +"ui/unsized/issue-30355.rs", +"ui/unsized/issue-40231-1.rs", +"ui/unsized/issue-40231-2.rs", +"ui/unsized/issue-71659.rs", +"ui/unsized/issue-75707.rs", +"ui/unsized/issue-75899-but-gats.rs", +"ui/unsized/issue-75899.rs", +"ui/unsized/issue-91801.rs", +"ui/unsized/issue-91803.rs", +"ui/unsized/issue-97732.rs", +"ui/use/issue-18986.rs", +"ui/use/issue-60976-extern-use-primitive-type.rs", +"ui/wf/issue-103573.rs", +"ui/wf/issue-110157.rs", +"ui/wf/issue-48638.rs", +"ui/wf/issue-87495.rs", +"ui/wf/issue-95665.rs", +"ui/wf/issue-96810.rs", +"ui/where-clauses/issue-50825-1.rs", +"ui/where-clauses/issue-50825.rs", +] diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index a9340c40f44..870322c44fb 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -101,7 +101,7 @@ fn main() { // Checks over tests. check!(tests_placement, &root_path); check!(debug_artifacts, &tests_path); - check!(ui_tests, &tests_path); + check!(ui_tests, &tests_path, bless); check!(mir_opt_tests, &tests_path, bless); check!(rustdoc_gui_tests, &tests_path); check!(rustdoc_css_themes, &librustdoc_path); diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs index 5517b9fdcec..920fe16a9fc 100644 --- a/src/tools/tidy/src/ui_tests.rs +++ b/src/tools/tidy/src/ui_tests.rs @@ -1,11 +1,13 @@ //! Tidy check to ensure below in UI test directories: //! - the number of entries in each directory must be less than `ENTRY_LIMIT` //! - there are no stray `.stderr` files - use ignore::Walk; -use std::collections::HashMap; +use lazy_static::lazy_static; +use regex::Regex; +use std::collections::{BTreeSet, HashMap}; use std::ffi::OsStr; use std::fs; +use std::io::Write; use std::path::{Path, PathBuf}; // FIXME: GitHub's UI truncates file lists that exceed 1000 entries, so these @@ -16,7 +18,7 @@ const ENTRY_LIMIT: usize = 900; // FIXME: The following limits should be reduced eventually. const ISSUES_ENTRY_LIMIT: usize = 1781; -const ROOT_ENTRY_LIMIT: usize = 871; +const ROOT_ENTRY_LIMIT: usize = 872; const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[ "rs", // test source files @@ -95,8 +97,17 @@ fn check_entries(tests_path: &Path, bad: &mut bool) { } } -pub fn check(path: &Path, bad: &mut bool) { +pub fn check(path: &Path, bless: bool, bad: &mut bool) { check_entries(&path, bad); + + // the list of files in ui tests that are allowed to start with `issue-XXXX` + // BTreeSet because we would like a stable ordering so --bless works + let allowed_issue_names = BTreeSet::from( + include!("issues.txt").map(|path| path.replace("/", std::path::MAIN_SEPARATOR_STR)), + ); + + let mut remaining_issue_names: BTreeSet<String> = allowed_issue_names.clone(); + let (ui, ui_fulldeps) = (path.join("ui"), path.join("ui-fulldeps")); let paths = [ui.as_path(), ui_fulldeps.as_path()]; crate::walk::walk_no_read(&paths, |_, _| false, &mut |entry| { @@ -109,6 +120,11 @@ pub fn check(path: &Path, bad: &mut bool) { { tidy_error!(bad, "file {} has unexpected extension {}", file_path.display(), ext); } + + // NB: We do not use file_stem() as some file names have multiple `.`s and we + // must strip all of them. + let testname = + file_path.file_name().unwrap().to_str().unwrap().split_once('.').unwrap().0; if ext == "stderr" || ext == "stdout" || ext == "fixed" { // Test output filenames have one of the formats: // ``` @@ -120,11 +136,7 @@ pub fn check(path: &Path, bad: &mut bool) { // // For now, just make sure that there is a corresponding // `$testname.rs` file. - // - // NB: We do not use file_stem() as some file names have multiple `.`s and we - // must strip all of them. - let testname = - file_path.file_name().unwrap().to_str().unwrap().split_once('.').unwrap().0; + if !file_path.with_file_name(testname).with_extension("rs").exists() && !testname.contains("ignore-tidy") { @@ -137,6 +149,60 @@ pub fn check(path: &Path, bad: &mut bool) { } } } + + if ext == "rs" { + lazy_static! { + static ref ISSUE_NAME_REGEX: Regex = + Regex::new(r"^issues?[-_]?(\d{3,})").unwrap(); + } + + if let Some(test_name) = ISSUE_NAME_REGEX.captures(testname) { + // these paths are always relative to the passed `path` and always UTF8 + let stripped_path = file_path.strip_prefix(path).unwrap().to_str().unwrap(); + if !remaining_issue_names.remove(stripped_path) { + tidy_error!( + bad, + "file `tests/{stripped_path}` must begin with a descriptive name, consider `{{reason}}-issue-{issue_n}.rs`", + issue_n = &test_name[1], + ); + } + } + } } }); + + // if an excluded file is renamed, it must be removed from this list + // do this automatically on bless, otherwise issue a tidy error + if bless { + let issues_txt_header = r#" +/* +============================================================ + ⚠️⚠️⚠️NOTHING SHOULD EVER BE ADDED TO THIS LIST⚠️⚠️⚠️ +============================================================ +*/ +[ +"#; + let tidy_src = std::env::current_dir().unwrap().join("src/tools/tidy/src"); + // instead of overwriting the file, recreate it and use an "atomic rename" + // so we don't bork things on panic or a contributor using Ctrl+C + let blessed_issues_path = tidy_src.join("issues_blessed.txt"); + let mut blessed_issues_txt = fs::File::create(&blessed_issues_path).unwrap(); + blessed_issues_txt.write(issues_txt_header.as_bytes()).unwrap(); + for filename in allowed_issue_names.difference(&remaining_issue_names) { + write!(blessed_issues_txt, "\"{filename}\",\n").unwrap(); + } + write!(blessed_issues_txt, "]\n").unwrap(); + let old_issues_path = tidy_src.join("issues.txt"); + fs::rename(blessed_issues_path, old_issues_path).unwrap(); + } else { + for file_name in remaining_issue_names { + let mut p = PathBuf::from(path); + p.push(file_name); + tidy_error!( + bad, + "file `{}` no longer exists and should be removed from the exclusions in `src/tools/tidy/src/issues.txt`", + p.display() + ); + } + } } |
