fix(rustfmt): resolve generated file formatting issue

This commit is contained in:
Caleb Cartwright 2022-01-14 18:18:37 -06:00
parent ad46af2471
commit bcf72a7293
4 changed files with 25 additions and 5 deletions

View file

@ -929,9 +929,9 @@ fn add_one(x: i32) -> i32 {
## `format_generated_files`
Format generated files. A file is considered generated
if any of the first five lines contains `@generated` marker.
if any of the first five lines contain a `@generated` comment marker.
- **Default value**: `false`
- **Default value**: `true`
- **Possible values**: `true`, `false`
- **Stable**: No (tracking issue: [#5080](https://github.com/rust-lang/rustfmt/issues/5080))

View file

@ -138,7 +138,7 @@
inline_attribute_width: usize, 0, false,
"Write an item and its attribute on the same line \
if their combined width is below a threshold";
format_generated_files: bool, false, false, "Format generated files";
format_generated_files: bool, true, false, "Format generated files";
// Options that can change the source code beyond whitespace/blocks (somewhat linty things)
merge_derives: bool, true, true, "Merge multiple `#[derive(...)]` into a single one";
@ -606,7 +606,7 @@ fn test_dump_default_config() {
edition = "2015"
version = "One"
inline_attribute_width = 0
format_generated_files = false
format_generated_files = true
merge_derives = true
use_try_shorthand = false
use_field_init_shorthand = false

View file

@ -80,7 +80,9 @@ fn should_skip_module<T: FormatHandler>(
return true;
}
if !config.format_generated_files() {
// FIXME(calebcartwright) - we need to determine how we'll handle the
// `format_generated_files` option with stdin based input.
if !input_is_stdin && !config.format_generated_files() {
let source_file = context.parse_session.span_to_file_contents(module.span);
let src = source_file.src.as_ref().expect("SourceFile without src");

View file

@ -487,6 +487,24 @@ fn stdin_disable_all_formatting_test() {
assert_eq!(input, String::from_utf8(output.stdout).unwrap());
}
#[test]
fn stdin_generated_files_issue_5172() {
init_log();
let input = Input::Text("//@generated\nfn main() {}".to_owned());
let mut config = Config::default();
config.set().emit_mode(EmitMode::Stdout);
config.set().format_generated_files(false);
config.set().newline_style(NewlineStyle::Unix);
let mut buf: Vec<u8> = vec![];
{
let mut session = Session::new(config, Some(&mut buf));
session.format(input).unwrap();
assert!(session.has_no_errors());
}
// N.B. this should be changed once `format_generated_files` is supported with stdin
assert_eq!(buf, "stdin:\n\n//@generated\nfn main() {}\n".as_bytes());
}
#[test]
fn format_lines_errors_are_reported() {
init_log();