diff --git a/src/formatting.rs b/src/formatting.rs index 1e1e329f624..a9fe8381429 100644 --- a/src/formatting.rs +++ b/src/formatting.rs @@ -230,7 +230,7 @@ impl<'a, T: FormatHandler + 'a> FormatContext<'a, T> { // For some reason, the source_map does not include terminating // newlines so we must add one on for each file. This is sad. - source_file::append_newline(&mut visitor.buffer); + source_file::append_newline(&mut visitor.buffer, self.config.style_edition()); format_lines( &mut visitor.buffer, diff --git a/src/source_file.rs b/src/source_file.rs index b0ec24f3db6..e30534b8fae 100644 --- a/src/source_file.rs +++ b/src/source_file.rs @@ -3,10 +3,10 @@ use std::io::{self, Write}; use std::path::Path; use std::sync::Arc; -use crate::NewlineStyle; use crate::config::FileName; use crate::emitter::{self, Emitter}; use crate::parse::session::ParseSess; +use crate::{NewlineStyle, StyleEdition}; #[cfg(test)] use crate::config::Config; @@ -16,10 +16,27 @@ use crate::create_emitter; use crate::formatting::FileRecord; // Append a newline to the end of each file. -pub(crate) fn append_newline(s: &mut String) { +pub(crate) fn append_newline(s: &mut String, style_edition: StyleEdition) { + if style_edition >= StyleEdition::Edition2027 && s.is_empty() { + return; + } s.push('\n'); } +#[test] +fn append_newline_adds_newlines_before_2027() { + let mut text = String::new(); + append_newline(&mut text, StyleEdition::Edition2024); + assert_eq!(text, "\n"); +} + +#[test] +fn append_newline_leaves_empty_files_empty_in_2027() { + let mut text = String::new(); + append_newline(&mut text, StyleEdition::Edition2027); + assert!(text.is_empty()); +} + #[cfg(test)] pub(crate) fn write_all_files( source_file: &[FileRecord], diff --git a/src/test/mod.rs b/src/test/mod.rs index 36e6aa84fc2..77b1500bba9 100644 --- a/src/test/mod.rs +++ b/src/test/mod.rs @@ -49,6 +49,7 @@ const FILE_SKIP_LIST: &[&str] = &[ "cfg_mod/bar.rs", "cfg_mod/foo.rs", "cfg_mod/wasm32.rs", + "reorder_modules_2027", "skip/foo.rs", ]; diff --git a/tests/config/newline_file.toml b/tests/config/newline_file.toml new file mode 100644 index 00000000000..3501136812c --- /dev/null +++ b/tests/config/newline_file.toml @@ -0,0 +1 @@ +style_edition = "2024" diff --git a/tests/source/newline_file.rs b/tests/source/newline_file.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/source/newline_file.rs @@ -0,0 +1 @@ + diff --git a/tests/source/reorder_modules_2027/A2/mod.rs b/tests/source/reorder_modules_2027/A2/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/ABCD/mod.rs b/tests/source/reorder_modules_2027/ABCD/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/ZYXW/mod.rs b/tests/source/reorder_modules_2027/ZYXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/ZYXW_/mod.rs b/tests/source/reorder_modules_2027/ZYXW_/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/ZY_XW/mod.rs b/tests/source/reorder_modules_2027/ZY_XW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/Z_YXW/mod.rs b/tests/source/reorder_modules_2027/Z_YXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/_ZYXW/mod.rs b/tests/source/reorder_modules_2027/_ZYXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/_abcd/mod.rs b/tests/source/reorder_modules_2027/_abcd/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/a1/mod.rs b/tests/source/reorder_modules_2027/a1/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/abcd/mod.rs b/tests/source/reorder_modules_2027/abcd/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules/disabled_style_edition_2027.rs b/tests/source/reorder_modules_2027/disabled_style_edition_2027.rs similarity index 100% rename from tests/source/reorder_modules/disabled_style_edition_2027.rs rename to tests/source/reorder_modules_2027/disabled_style_edition_2027.rs diff --git a/tests/source/reorder_modules/enabled_style_edition_2027.rs b/tests/source/reorder_modules_2027/enabled_style_edition_2027.rs similarity index 100% rename from tests/source/reorder_modules/enabled_style_edition_2027.rs rename to tests/source/reorder_modules_2027/enabled_style_edition_2027.rs diff --git a/tests/source/reorder_modules_2027/u128/mod.rs b/tests/source/reorder_modules_2027/u128/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u16/mod.rs b/tests/source/reorder_modules_2027/u16/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u256/mod.rs b/tests/source/reorder_modules_2027/u256/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u32/mod.rs b/tests/source/reorder_modules_2027/u32/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u64/mod.rs b/tests/source/reorder_modules_2027/u64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u8/mod.rs b/tests/source/reorder_modules_2027/u8/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/u_zzz/mod.rs b/tests/source/reorder_modules_2027/u_zzz/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/ua/mod.rs b/tests/source/reorder_modules_2027/ua/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/usize/mod.rs b/tests/source/reorder_modules_2027/usize/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/uz/mod.rs b/tests/source/reorder_modules_2027/uz/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v0/mod.rs b/tests/source/reorder_modules_2027/v0/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v00/mod.rs b/tests/source/reorder_modules_2027/v00/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v000/mod.rs b/tests/source/reorder_modules_2027/v000/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v001/mod.rs b/tests/source/reorder_modules_2027/v001/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v009/mod.rs b/tests/source/reorder_modules_2027/v009/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v00t/mod.rs b/tests/source/reorder_modules_2027/v00t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v01/mod.rs b/tests/source/reorder_modules_2027/v01/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v010/mod.rs b/tests/source/reorder_modules_2027/v010/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v09/mod.rs b/tests/source/reorder_modules_2027/v09/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v0s/mod.rs b/tests/source/reorder_modules_2027/v0s/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v0u/mod.rs b/tests/source/reorder_modules_2027/v0u/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v1/mod.rs b/tests/source/reorder_modules_2027/v1/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v10/mod.rs b/tests/source/reorder_modules_2027/v10/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/v9/mod.rs b/tests/source/reorder_modules_2027/v9/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/w005s09t/mod.rs b/tests/source/reorder_modules_2027/w005s09t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/w5s009t/mod.rs b/tests/source/reorder_modules_2027/w5s009t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x64/mod.rs b/tests/source/reorder_modules_2027/x64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x86/mod.rs b/tests/source/reorder_modules_2027/x86/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x86_128/mod.rs b/tests/source/reorder_modules_2027/x86_128/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x86_32/mod.rs b/tests/source/reorder_modules_2027/x86_32/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x86_64/mod.rs b/tests/source/reorder_modules_2027/x86_64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/x87/mod.rs b/tests/source/reorder_modules_2027/x87/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/source/reorder_modules_2027/zyxw/mod.rs b/tests/source/reorder_modules_2027/zyxw/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/newline_file.rs b/tests/target/newline_file.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/target/newline_file.rs @@ -0,0 +1 @@ + diff --git a/tests/target/reorder_modules_2027/A2/mod.rs b/tests/target/reorder_modules_2027/A2/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/ABCD/mod.rs b/tests/target/reorder_modules_2027/ABCD/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/ZYXW/mod.rs b/tests/target/reorder_modules_2027/ZYXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/ZYXW_/mod.rs b/tests/target/reorder_modules_2027/ZYXW_/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/ZY_XW/mod.rs b/tests/target/reorder_modules_2027/ZY_XW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/Z_YXW/mod.rs b/tests/target/reorder_modules_2027/Z_YXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/_ZYXW/mod.rs b/tests/target/reorder_modules_2027/_ZYXW/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/_abcd/mod.rs b/tests/target/reorder_modules_2027/_abcd/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/a1/mod.rs b/tests/target/reorder_modules_2027/a1/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/abcd/mod.rs b/tests/target/reorder_modules_2027/abcd/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules/disabled_style_edition_2027.rs b/tests/target/reorder_modules_2027/disabled_style_edition_2027.rs similarity index 100% rename from tests/target/reorder_modules/disabled_style_edition_2027.rs rename to tests/target/reorder_modules_2027/disabled_style_edition_2027.rs diff --git a/tests/target/reorder_modules/enabled_style_edition_2027.rs b/tests/target/reorder_modules_2027/enabled_style_edition_2027.rs similarity index 100% rename from tests/target/reorder_modules/enabled_style_edition_2027.rs rename to tests/target/reorder_modules_2027/enabled_style_edition_2027.rs diff --git a/tests/target/reorder_modules_2027/u128/mod.rs b/tests/target/reorder_modules_2027/u128/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u16/mod.rs b/tests/target/reorder_modules_2027/u16/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u256/mod.rs b/tests/target/reorder_modules_2027/u256/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u32/mod.rs b/tests/target/reorder_modules_2027/u32/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u64/mod.rs b/tests/target/reorder_modules_2027/u64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u8/mod.rs b/tests/target/reorder_modules_2027/u8/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/u_zzz/mod.rs b/tests/target/reorder_modules_2027/u_zzz/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/ua/mod.rs b/tests/target/reorder_modules_2027/ua/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/usize/mod.rs b/tests/target/reorder_modules_2027/usize/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/uz/mod.rs b/tests/target/reorder_modules_2027/uz/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v0/mod.rs b/tests/target/reorder_modules_2027/v0/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v00/mod.rs b/tests/target/reorder_modules_2027/v00/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v000/mod.rs b/tests/target/reorder_modules_2027/v000/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v001/mod.rs b/tests/target/reorder_modules_2027/v001/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v009/mod.rs b/tests/target/reorder_modules_2027/v009/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v00t/mod.rs b/tests/target/reorder_modules_2027/v00t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v01/mod.rs b/tests/target/reorder_modules_2027/v01/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v010/mod.rs b/tests/target/reorder_modules_2027/v010/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v09/mod.rs b/tests/target/reorder_modules_2027/v09/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v0s/mod.rs b/tests/target/reorder_modules_2027/v0s/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v0u/mod.rs b/tests/target/reorder_modules_2027/v0u/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v1/mod.rs b/tests/target/reorder_modules_2027/v1/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v10/mod.rs b/tests/target/reorder_modules_2027/v10/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/v9/mod.rs b/tests/target/reorder_modules_2027/v9/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/w005s09t/mod.rs b/tests/target/reorder_modules_2027/w005s09t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/w5s009t/mod.rs b/tests/target/reorder_modules_2027/w5s009t/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x64/mod.rs b/tests/target/reorder_modules_2027/x64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x86/mod.rs b/tests/target/reorder_modules_2027/x86/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x86_128/mod.rs b/tests/target/reorder_modules_2027/x86_128/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x86_32/mod.rs b/tests/target/reorder_modules_2027/x86_32/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x86_64/mod.rs b/tests/target/reorder_modules_2027/x86_64/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/x87/mod.rs b/tests/target/reorder_modules_2027/x87/mod.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/target/reorder_modules_2027/zyxw/mod.rs b/tests/target/reorder_modules_2027/zyxw/mod.rs new file mode 100644 index 00000000000..e69de29bb2d