diff --git a/src/test/run-make/thumb-none-qemu/example/Cargo.toml b/src/test/run-make/thumb-none-qemu/example/Cargo.toml index 499553304c681..73fdee71f0c0b 100644 --- a/src/test/run-make/thumb-none-qemu/example/Cargo.toml +++ b/src/test/run-make/thumb-none-qemu/example/Cargo.toml @@ -2,7 +2,7 @@ name = "example" version = "0.1.0" authors = ["Hideki Sekine "] -# edition = "2018" +edition = "2018" [dependencies] cortex-m = "0.5.4" diff --git a/src/test/run-make/thumb-none-qemu/example/src/main.rs b/src/test/run-make/thumb-none-qemu/example/src/main.rs index d88a327ef08b4..4a08419a07e14 100644 --- a/src/test/run-make/thumb-none-qemu/example/src/main.rs +++ b/src/test/run-make/thumb-none-qemu/example/src/main.rs @@ -1,16 +1,14 @@ // #![feature(stdsimd)] #![no_main] #![no_std] - -extern crate cortex_m; - -extern crate cortex_m_rt as rt; -extern crate cortex_m_semihosting as semihosting; -extern crate panic_halt; - use core::fmt::Write; use cortex_m::asm; -use rt::entry; +use cortex_m_rt::entry; +use cortex_m_semihosting as semihosting; + +//FIXME: This imports the provided #[panic_handler]. +#[allow(rust_2018_idioms)] +extern crate panic_halt; entry!(main); @@ -22,7 +20,7 @@ fn main() -> ! { // write something through semihosting interface let mut hstdout = semihosting::hio::hstdout().unwrap(); - write!(hstdout, "x = {}\n", x); + let _ = write!(hstdout, "x = {}\n", x); // exit from qemu semihosting::debug::exit(semihosting::debug::EXIT_SUCCESS); diff --git a/src/tools/rustc-std-workspace-alloc/Cargo.toml b/src/tools/rustc-std-workspace-alloc/Cargo.toml index 05df1fddc7f1c..ef7dc812af9d4 100644 --- a/src/tools/rustc-std-workspace-alloc/Cargo.toml +++ b/src/tools/rustc-std-workspace-alloc/Cargo.toml @@ -6,6 +6,7 @@ license = 'MIT OR Apache-2.0' description = """ Hack for the compiler's own build system """ +edition = "2018" [lib] path = "lib.rs" diff --git a/src/tools/tidy/src/edition.rs b/src/tools/tidy/src/edition.rs new file mode 100644 index 0000000000000..4a2e49fd1c3c7 --- /dev/null +++ b/src/tools/tidy/src/edition.rs @@ -0,0 +1,45 @@ +//! Tidy check to ensure that crate `edition` is '2018' +//! + +use std::path::Path; + +fn filter_dirs(path: &Path) -> bool { + // FIXME: just use super::filter_dirs after the submodules are updated. + if super::filter_dirs(path) { + return true; + } + let skip = [ + "src/doc/book/second-edition", + "src/doc/book/2018-edition", + "src/doc/book/ci/stable-check", + "src/doc/reference/stable-check", + ]; + skip.iter().any(|p| path.ends_with(p)) +} + +fn is_edition_2018(mut line: &str) -> bool { + line = line.trim(); + line == "edition = \"2018\"" || line == "edition = \'2018\'" +} + +pub fn check(path: &Path, bad: &mut bool) { + super::walk( + path, + &mut |path| filter_dirs(path) || path.ends_with("src/test"), + &mut |entry, contents| { + let file = entry.path(); + let filename = file.file_name().unwrap(); + if filename != "Cargo.toml" { + return; + } + let has_edition = contents.lines().any(is_edition_2018); + if !has_edition { + tidy_error!( + bad, + "{} doesn't have `edition = \"2018\"` on a separate line", + file.display() + ); + } + }, + ); +} diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs index eca8001a9d2a1..e01184e3658b5 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -34,6 +34,7 @@ pub mod style; pub mod errors; pub mod features; pub mod cargo; +pub mod edition; pub mod pal; pub mod deps; pub mod extdeps; diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index 3acb50547daf0..5deac52f08b5e 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -22,6 +22,7 @@ fn main() { style::check(&path, &mut bad); errors::check(&path, &mut bad); cargo::check(&path, &mut bad); + edition::check(&path, &mut bad); let collected = features::check(&path, &mut bad, verbose); pal::check(&path, &mut bad); unstable_book::check(&path, collected, &mut bad);