diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs index a76584093fc76..a8f0d24ce63db 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs @@ -290,9 +290,7 @@ fn main() { } // This is required for internal lints. - if stage != "0" { - cmd.arg("-Zunstable-options"); - } + cmd.arg("-Zunstable-options"); // Force all crates compiled by this compiler to (a) be unstable and (b) // allow the `rustc_private` feature to link to other unstable crates diff --git a/src/bootstrap/channel.rs b/src/bootstrap/channel.rs index e42b073322e28..a6da4f5385a5b 100644 --- a/src/bootstrap/channel.rs +++ b/src/bootstrap/channel.rs @@ -13,7 +13,7 @@ use build_helper::output; use crate::Build; // The version number -pub const CFG_RELEASE_NUM: &str = "1.35.0"; +pub const CFG_RELEASE_NUM: &str = "1.36.0"; pub struct GitInfo { inner: Option<Info>, diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index bcd28e9cf5e70..fb60b470a36f2 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -1125,8 +1125,6 @@ impl Build { /// `rust.save-toolstates` in `config.toml`. If unspecified, nothing will be /// done. The file is updated immediately after this function completes. pub fn save_toolstate(&self, tool: &str, state: ToolState) { - use std::io::{Seek, SeekFrom}; - if let Some(ref path) = self.config.save_toolstates { let mut file = t!(fs::OpenOptions::new() .create(true) diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index cfe317a00f906..ce5e5f23a94b8 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -12,7 +12,7 @@ test(no_crate_inject, attr(deny(warnings))))] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(core_intrinsics)] #![feature(dropck_eyepatch)] diff --git a/src/libcore/hint.rs b/src/libcore/hint.rs index d43e6c49f4c99..89bf364096896 100644 --- a/src/libcore/hint.rs +++ b/src/libcore/hint.rs @@ -21,11 +21,10 @@ use intrinsics; /// difficult-to-debug problems. /// /// Use this function only when you can prove that the code will never call it. +/// Otherwise, consider using the [`unreachable!`] macro, which does not allow +/// optimizations but will panic when executed. /// -/// The [`unreachable!()`] macro is the safe counterpart of this function, which -/// will panic instead when executed. -/// -/// [`unreachable!()`]: ../macro.unreachable.html +/// [`unreachable!`]: ../macro.unreachable.html /// /// # Example /// diff --git a/src/libfmt_macros/lib.rs b/src/libfmt_macros/lib.rs index 2536121c7a324..6fed83021609d 100644 --- a/src/libfmt_macros/lib.rs +++ b/src/libfmt_macros/lib.rs @@ -9,7 +9,7 @@ test(attr(deny(warnings))))] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(nll)] #![feature(rustc_private)] diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index c5c2cbfcb8940..4cbf8e3ecfc66 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -29,7 +29,7 @@ #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(explicit_outlives_requirements)] #![feature(arbitrary_self_types)] diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index c20454a8822cd..df77033ebef3b 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -163,7 +163,6 @@ fn configure_main( err.span_note(span, "here is a function named 'main'"); } err.emit(); - tcx.sess.abort_if_errors(); } else { if let Some(ref filename) = tcx.sess.local_crate_source_file { err.note(&format!("consider adding a `main` function to `{}`", filename.display())); diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index d24395ac9c182..4aca01d9411c7 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -1,4 +1,4 @@ -#![cfg_attr(not(stage0), allow(usage_of_ty_tykind))] +#![allow(usage_of_ty_tykind)] pub use self::Variance::*; pub use self::AssociatedItemContainer::*; diff --git a/src/librustc_allocator/lib.rs b/src/librustc_allocator/lib.rs index a9e422fb238b8..3aef5a76a3a05 100644 --- a/src/librustc_allocator/lib.rs +++ b/src/librustc_allocator/lib.rs @@ -2,7 +2,7 @@ #![feature(rustc_private)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] pub mod expand; diff --git a/src/librustc_borrowck/lib.rs b/src/librustc_borrowck/lib.rs index 3761a52bcccf2..14bc77f380acc 100644 --- a/src/librustc_borrowck/lib.rs +++ b/src/librustc_borrowck/lib.rs @@ -2,7 +2,7 @@ #![allow(non_camel_case_types)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(nll)] diff --git a/src/librustc_codegen_ssa/back/linker.rs b/src/librustc_codegen_ssa/back/linker.rs index c99fc17dd89a1..b433856d5e130 100644 --- a/src/librustc_codegen_ssa/back/linker.rs +++ b/src/librustc_codegen_ssa/back/linker.rs @@ -372,25 +372,18 @@ impl<'a> Linker for GccLinker<'a> { } fn export_symbols(&mut self, tmpdir: &Path, crate_type: CrateType) { - // If we're compiling a dylib, then we let symbol visibility in object - // files to take care of whether they're exported or not. - // - // If we're compiling a cdylib, however, we manually create a list of - // exported symbols to ensure we don't expose any more. The object files - // have far more public symbols than we actually want to export, so we - // hide them all here. - if crate_type == CrateType::Dylib || - crate_type == CrateType::ProcMacro { - return - } + // We manually create a list of exported symbols to ensure we don't expose any more. + // The object files have far more public symbols than we actually want to export, + // so we hide them all here. - // Symbol visibility takes care of this for the WebAssembly. - // Additionally the only known linker, LLD, doesn't support the script - // arguments just yet - if self.sess.target.target.arch == "wasm32" { + if !self.sess.target.target.options.limit_rdylib_exports { return; } + if crate_type == CrateType::ProcMacro { + return + } + let mut arg = OsString::new(); let path = tmpdir.join("list"); diff --git a/src/librustc_codegen_ssa/lib.rs b/src/librustc_codegen_ssa/lib.rs index e2917578c0ece..c6e689f2e83c3 100644 --- a/src/librustc_codegen_ssa/lib.rs +++ b/src/librustc_codegen_ssa/lib.rs @@ -14,7 +14,7 @@ #![allow(unused_attributes)] #![allow(dead_code)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(explicit_outlives_requirements)] #![recursion_limit="256"] diff --git a/src/librustc_codegen_utils/lib.rs b/src/librustc_codegen_utils/lib.rs index 330cfe154e302..437515f1e9ab4 100644 --- a/src/librustc_codegen_utils/lib.rs +++ b/src/librustc_codegen_utils/lib.rs @@ -16,7 +16,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[macro_use] extern crate rustc; diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index 66c7c9d0eae7e..6a5accc8d7f05 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -17,7 +17,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] pub extern crate getopts; #[cfg(unix)] diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs index 71bef54cd17a1..cb45e13c4d2dc 100644 --- a/src/librustc_errors/lib.rs +++ b/src/librustc_errors/lib.rs @@ -6,7 +6,7 @@ #![feature(nll)] #![feature(optin_builtin_traits)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[allow(unused_extern_crates)] extern crate serialize as rustc_serialize; // used by deriving diff --git a/src/librustc_incremental/lib.rs b/src/librustc_incremental/lib.rs index d7db324f3463e..eb82885abee06 100644 --- a/src/librustc_incremental/lib.rs +++ b/src/librustc_incremental/lib.rs @@ -8,7 +8,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[macro_use] extern crate rustc; #[allow(unused_extern_crates)] diff --git a/src/librustc_interface/lib.rs b/src/librustc_interface/lib.rs index 353ff6a57a5ef..d1e2a1a4ad506 100644 --- a/src/librustc_interface/lib.rs +++ b/src/librustc_interface/lib.rs @@ -7,7 +7,7 @@ #![cfg_attr(unix, feature(libc))] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(unused_imports)] diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs index 3fd684f5d97e9..2f01254ed5f9b 100644 --- a/src/librustc_interface/passes.rs +++ b/src/librustc_interface/passes.rs @@ -886,10 +886,11 @@ fn analysis<'tcx>( assert_eq!(cnum, LOCAL_CRATE); let sess = tcx.sess; + let mut entry_point = None; time(sess, "misc checking 1", || { parallel!({ - time(sess, "looking for entry point", || { + entry_point = time(sess, "looking for entry point", || { middle::entry::find_entry_point(tcx) }); @@ -937,7 +938,10 @@ fn analysis<'tcx>( // Abort so we don't try to construct MIR with liveness errors. // We also won't want to continue with errors from rvalue promotion - tcx.sess.abort_if_errors(); + // We only do so if the only error found so far *isn't* a missing `fn main()` + if !(entry_point.is_none() && sess.err_count() == 1) { + tcx.sess.abort_if_errors(); + } time(sess, "borrow checking", || { if tcx.use_ast_borrowck() { diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs index 9354f203e4e4e..ff5e4f02554cc 100644 --- a/src/librustc_lint/lib.rs +++ b/src/librustc_lint/lib.rs @@ -20,7 +20,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[macro_use] extern crate rustc; diff --git a/src/librustc_metadata/lib.rs b/src/librustc_metadata/lib.rs index 4078171733fc3..d052e13f9c0a7 100644 --- a/src/librustc_metadata/lib.rs +++ b/src/librustc_metadata/lib.rs @@ -14,7 +14,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] extern crate libc; #[allow(unused_extern_crates)] diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs index deeed9a0b9846..a16eaf011c86e 100644 --- a/src/librustc_mir/lib.rs +++ b/src/librustc_mir/lib.rs @@ -28,7 +28,7 @@ Rust MIR: a lowered representation of Rust. Also: an experiment! #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(explicit_outlives_requirements)] #[macro_use] extern crate log; diff --git a/src/librustc_passes/lib.rs b/src/librustc_passes/lib.rs index 20442a4a566ec..db8fcaa569389 100644 --- a/src/librustc_passes/lib.rs +++ b/src/librustc_passes/lib.rs @@ -12,7 +12,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[macro_use] extern crate rustc; diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs index 44621e5dc95d1..ef315c5f95502 100644 --- a/src/librustc_privacy/lib.rs +++ b/src/librustc_privacy/lib.rs @@ -1,7 +1,7 @@ #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(nll)] #![feature(rustc_diagnostic_macros)] diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 96aac97729797..864fc2ebaec77 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -9,7 +9,7 @@ #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] pub use rustc::hir::def::{Namespace, PerNS}; diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs index ce0decaee496f..d901fb2bff8c7 100644 --- a/src/librustc_save_analysis/lib.rs +++ b/src/librustc_save_analysis/lib.rs @@ -2,7 +2,7 @@ #![feature(custom_attribute)] #![feature(nll)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(unused_attributes)] #![recursion_limit="256"] diff --git a/src/librustc_target/lib.rs b/src/librustc_target/lib.rs index f1812c20dccde..3fcf08adb5c8e 100644 --- a/src/librustc_target/lib.rs +++ b/src/librustc_target/lib.rs @@ -16,7 +16,7 @@ #![feature(step_trait)] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #[macro_use] extern crate log; diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index 46fefd78f4519..64799324f6a55 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -751,6 +751,9 @@ pub struct TargetOptions { /// wasm32 where the whole program either has simd or not. pub simd_types_indirect: bool, + /// Pass a list of symbol which should be exported in the dylib to the linker. + pub limit_rdylib_exports: bool, + /// If set, have the linker export exactly these symbols, instead of using /// the usual logic to figure this out from the crate itself. pub override_export_symbols: Option<Vec<String>>, @@ -846,6 +849,7 @@ impl Default for TargetOptions { emit_debug_gdb_scripts: true, requires_uwtable: false, simd_types_indirect: true, + limit_rdylib_exports: true, override_export_symbols: None, merge_functions: MergeFunctions::Aliases, target_mcount: "mcount".to_string(), @@ -1152,6 +1156,7 @@ impl Target { key!(emit_debug_gdb_scripts, bool); key!(requires_uwtable, bool); key!(simd_types_indirect, bool); + key!(limit_rdylib_exports, bool); key!(override_export_symbols, opt_list); key!(merge_functions, MergeFunctions)?; key!(target_mcount); @@ -1367,6 +1372,7 @@ impl ToJson for Target { target_option_val!(emit_debug_gdb_scripts); target_option_val!(requires_uwtable); target_option_val!(simd_types_indirect); + target_option_val!(limit_rdylib_exports); target_option_val!(override_export_symbols); target_option_val!(merge_functions); target_option_val!(target_mcount); diff --git a/src/librustc_target/spec/solaris_base.rs b/src/librustc_target/spec/solaris_base.rs index 0dfbb13b77317..9e7eda037732b 100644 --- a/src/librustc_target/spec/solaris_base.rs +++ b/src/librustc_target/spec/solaris_base.rs @@ -8,6 +8,7 @@ pub fn opts() -> TargetOptions { has_rpath: true, target_family: Some("unix".to_string()), is_like_solaris: true, + limit_rdylib_exports: false, // Linker doesn't support this .. Default::default() } diff --git a/src/librustc_target/spec/wasm32_base.rs b/src/librustc_target/spec/wasm32_base.rs index edaf902c130d8..39a8ce9282573 100644 --- a/src/librustc_target/spec/wasm32_base.rs +++ b/src/librustc_target/spec/wasm32_base.rs @@ -106,6 +106,11 @@ pub fn options() -> TargetOptions { // no dynamic linking, no need for default visibility! default_hidden_visibility: true, + // Symbol visibility takes care of this for the WebAssembly. + // Additionally the only known linker, LLD, doesn't support the script + // arguments just yet + limit_rdylib_exports: false, + // we use the LLD shipped with the Rust toolchain by default linker: Some("rust-lld".to_owned()), lld_flavor: LldFlavor::Wasm, diff --git a/src/librustc_target/spec/wasm32_experimental_emscripten.rs b/src/librustc_target/spec/wasm32_experimental_emscripten.rs index 5ecd66306d055..b802bee25ae7a 100644 --- a/src/librustc_target/spec/wasm32_experimental_emscripten.rs +++ b/src/librustc_target/spec/wasm32_experimental_emscripten.rs @@ -24,6 +24,7 @@ pub fn target() -> Result<Target, String> { is_like_emscripten: true, max_atomic_width: Some(32), post_link_args, + limit_rdylib_exports: false, target_family: Some("unix".to_string()), .. Default::default() }; diff --git a/src/librustc_target/spec/wasm32_unknown_emscripten.rs b/src/librustc_target/spec/wasm32_unknown_emscripten.rs index a6e9340ce28ef..e0df36884bf56 100644 --- a/src/librustc_target/spec/wasm32_unknown_emscripten.rs +++ b/src/librustc_target/spec/wasm32_unknown_emscripten.rs @@ -26,6 +26,7 @@ pub fn target() -> Result<Target, String> { is_like_emscripten: true, max_atomic_width: Some(32), post_link_args, + limit_rdylib_exports: false, target_family: Some("unix".to_string()), codegen_backend: "emscripten".to_string(), .. Default::default() diff --git a/src/librustc_traits/lib.rs b/src/librustc_traits/lib.rs index bc034e1fb1627..959130f1cf228 100644 --- a/src/librustc_traits/lib.rs +++ b/src/librustc_traits/lib.rs @@ -2,7 +2,7 @@ //! the guts are broken up into modules; see the comments in those modules. #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(crate_visibility_modifier)] #![feature(in_band_lifetimes)] diff --git a/src/librustc_typeck/lib.rs b/src/librustc_typeck/lib.rs index 21d1af229ddc2..4320e28d676ed 100644 --- a/src/librustc_typeck/lib.rs +++ b/src/librustc_typeck/lib.rs @@ -71,7 +71,7 @@ This API is completely unstable and subject to change. #![recursion_limit="256"] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![allow(explicit_outlives_requirements)] #[macro_use] extern crate log; diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 3ee131d8f5c8c..d91b78c8416b8 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -2113,7 +2113,8 @@ impl Context { &final_file); // Generating settings page. - let settings = Settings::new("./", &self.shared.resource_suffix); + let settings = Settings::new(self.shared.static_root_path.deref().unwrap_or("./"), + &self.shared.resource_suffix); page.title = "Rustdoc settings"; page.description = "Settings of Rustdoc"; page.root_path = "./"; diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 6cb937d9216ac..5b76f6861de79 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -1,5 +1,5 @@ #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![doc(html_root_url = "https://doc.rust-lang.org/nightly/", html_playground_url = "https://play.rust-lang.org/")] diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs index 9905b981395c0..1486909b27692 100644 --- a/src/libsyntax/lib.rs +++ b/src/libsyntax/lib.rs @@ -8,7 +8,7 @@ test(attr(deny(warnings))))] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(crate_visibility_modifier)] #![feature(label_break_value)] diff --git a/src/libsyntax_ext/lib.rs b/src/libsyntax_ext/lib.rs index ee0b86963f31d..8371d27207589 100644 --- a/src/libsyntax_ext/lib.rs +++ b/src/libsyntax_ext/lib.rs @@ -3,7 +3,7 @@ #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(in_band_lifetimes)] #![feature(proc_macro_diagnostic)] diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs index 1ad556bbcfa56..3f09405a5c8c6 100644 --- a/src/libsyntax_pos/lib.rs +++ b/src/libsyntax_pos/lib.rs @@ -7,7 +7,7 @@ #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")] #![deny(rust_2018_idioms)] -#![cfg_attr(not(stage0), deny(internal))] +#![deny(internal)] #![feature(const_fn)] #![feature(crate_visibility_modifier)] diff --git a/src/stage0.txt b/src/stage0.txt index 43610f9068f57..17dba63054eac 100644 --- a/src/stage0.txt +++ b/src/stage0.txt @@ -12,7 +12,7 @@ # source tarball for a stable release you'll likely see `1.x.0` for rustc and # `0.x.0` for Cargo where they were released on `date`. -date: 2019-03-20 +date: 2019-04-11 rustc: beta cargo: beta diff --git a/src/test/rustdoc/static-root-path.rs b/src/test/rustdoc/static-root-path.rs index 84b32f90c89a4..2f7c89c5f1e6b 100644 --- a/src/test/rustdoc/static-root-path.rs +++ b/src/test/rustdoc/static-root-path.rs @@ -12,3 +12,7 @@ pub struct SomeStruct; // @!matches - '"\.\./\.\./source-script\.js"' // @matches - '"\.\./\.\./source-files.js"' // @!matches - '"/cache/source-files\.js"' + +// @has settings.html +// @matches - '/cache/settings\.js' +// @!matches - '\./settings\.js' diff --git a/src/test/ui/continue-after-missing-main.rs b/src/test/ui/continue-after-missing-main.rs new file mode 100644 index 0000000000000..7455c2a431d62 --- /dev/null +++ b/src/test/ui/continue-after-missing-main.rs @@ -0,0 +1,32 @@ +#![allow(dead_code)] + +// error-pattern:`main` function not found in crate + +struct Tableau<'a, MP> { + provider: &'a MP, +} + +impl<'adapted_matrix_provider, 'original_data, MP> + Tableau<'adapted_matrix_provider, AdaptedMatrixProvider<'original_data, MP>> +{ + fn provider(&self) -> &'adapted_matrix_provider AdaptedMatrixProvider</*'original_data,*/ MP> { + self.provider + } +} + +struct AdaptedMatrixProvider<'a, T> { + original_problem: &'a T, +} + +impl<'a, T> AdaptedMatrixProvider<'a, T> { + fn clone_with_extra_bound(&self) -> Self { + AdaptedMatrixProvider { original_problem: self.original_problem } + } +} + +fn create_and_solve_subproblems<'data_provider, 'original_data, MP>( + tableau: Tableau<'data_provider, AdaptedMatrixProvider<'original_data, MP>>, +) { + let _: AdaptedMatrixProvider<'original_data, MP> = tableau.provider().clone_with_extra_bound(); + //~^ ERROR lifetime mismatch +} diff --git a/src/test/ui/continue-after-missing-main.stderr b/src/test/ui/continue-after-missing-main.stderr new file mode 100644 index 0000000000000..8d64fee8bdaee --- /dev/null +++ b/src/test/ui/continue-after-missing-main.stderr @@ -0,0 +1,17 @@ +error[E0601]: `main` function not found in crate `continue_after_missing_main` + | + = note: consider adding a `main` function to `$DIR/continue-after-missing-main.rs` + +error[E0623]: lifetime mismatch + --> $DIR/continue-after-missing-main.rs:30:56 + | +LL | tableau: Tableau<'data_provider, AdaptedMatrixProvider<'original_data, MP>>, + | ------------------------------------------------------------------ these two types are declared with different lifetimes... +LL | ) { +LL | let _: AdaptedMatrixProvider<'original_data, MP> = tableau.provider().clone_with_extra_bound(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...but data from `tableau` flows into `tableau` here + +error: aborting due to 2 previous errors + +Some errors occurred: E0601, E0623. +For more information about an error, try `rustc --explain E0601`. diff --git a/src/tools/cargo b/src/tools/cargo index 6f3e9c367abb4..ef0223f12597b 160000 --- a/src/tools/cargo +++ b/src/tools/cargo @@ -1 +1 @@ -Subproject commit 6f3e9c367abb497c64f360c3839dab5e74928d5c +Subproject commit ef0223f12597b5e0d9d2feed1b92c41306b1fc05 diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 9e3c49119deaf..431fd7969be06 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -523,6 +523,7 @@ pub fn run_tests(config: &Config) { pub fn test_opts(config: &Config) -> test::TestOpts { test::TestOpts { + exclude_should_panic: false, filter: config.filter.clone(), filter_exact: config.filter_exact, run_ignored: if config.run_ignored { diff --git a/triagebot.toml b/triagebot.toml new file mode 100644 index 0000000000000..6f60481600c2e --- /dev/null +++ b/triagebot.toml @@ -0,0 +1,6 @@ +[relabel] +allow-unauthenticated = [ + "C-*", "A-*", "E-*", "NLL-*", "O-*", "S-*", "T-*", "WG-*", + # I-* without I-nominated + "I-compilemem", "I-compiletime", "I-crash", "I-hang", "I-ICE", "I-slow", +]