Skip to content

Commit abb253d

Browse files
committed
Rationalise result and error types
1 parent 432b1cb commit abb253d

File tree

5 files changed

+33
-56
lines changed

5 files changed

+33
-56
lines changed

src/config/summary.rs

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
use std::default::Default;
1212
use std::time::{Duration, Instant};
1313

14-
#[must_use]
1514
#[derive(Debug, Default, Clone, Copy)]
1615
pub struct Summary {
1716
// Encountered e.g. an IO error.

src/lib.rs

+10-28
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ impl FormattingError {
206206
}
207207

208208
#[derive(Clone)]
209-
pub struct FormatReport {
209+
struct FormatReport {
210210
// Maps stringified file paths to their associated formatting errors.
211211
internal: Rc<RefCell<(FormatErrorMap, ReportedErrors)>>,
212212
}
@@ -756,21 +756,21 @@ pub fn format_input<T: Write>(
756756
input: Input,
757757
config: &Config,
758758
out: Option<&mut T>,
759-
) -> Result<(Summary, FileMap, FormatReport), (io::Error, Summary)> {
760-
syntax::with_globals(|| format_input_inner(input, config, out))
759+
) -> Result<Summary, (ErrorKind, Summary)> {
760+
syntax::with_globals(|| format_input_inner(input, config, out)).map(|tup| tup.0)
761761
}
762762

763763
fn format_input_inner<T: Write>(
764764
input: Input,
765765
config: &Config,
766766
mut out: Option<&mut T>,
767-
) -> Result<(Summary, FileMap, FormatReport), (io::Error, Summary)> {
767+
) -> Result<(Summary, FileMap, FormatReport), (ErrorKind, Summary)> {
768768
let mut summary = Summary::default();
769769
if config.disable_all_formatting() {
770770
// When the input is from stdin, echo back the input.
771771
if let Input::Text(ref buf) = input {
772772
if let Err(e) = io::stdout().write_all(buf.as_bytes()) {
773-
return Err((e, summary));
773+
return Err((From::from(e), summary));
774774
}
775775
}
776776
return Ok((summary, FileMap::new(), FormatReport::new()));
@@ -890,7 +890,7 @@ fn format_input_inner<T: Write>(
890890

891891
Ok((summary, file_map, report))
892892
}
893-
Err(e) => Err((e, summary)),
893+
Err(e) => Err((From::from(e), summary)),
894894
}
895895
}
896896

@@ -913,33 +913,20 @@ struct ModifiedLines {
913913
pub chunks: Vec<ModifiedChunk>,
914914
}
915915

916-
/// The successful result of formatting via `get_modified_lines()`.
917-
#[cfg(test)]
918-
struct ModifiedLinesResult {
919-
/// The high level summary details
920-
pub summary: Summary,
921-
/// The result Filemap
922-
pub filemap: FileMap,
923-
/// Map of formatting errors
924-
pub report: FormatReport,
925-
/// The sets of updated lines.
926-
pub modified_lines: ModifiedLines,
927-
}
928-
929916
/// Format a file and return a `ModifiedLines` data structure describing
930917
/// the changed ranges of lines.
931918
#[cfg(test)]
932919
fn get_modified_lines(
933920
input: Input,
934921
config: &Config,
935-
) -> Result<ModifiedLinesResult, (io::Error, Summary)> {
922+
) -> Result<ModifiedLines, (ErrorKind, Summary)> {
936923
use std::io::BufRead;
937924

938925
let mut data = Vec::new();
939926

940927
let mut config = config.clone();
941928
config.set().write_mode(config::WriteMode::Modified);
942-
let (summary, filemap, report) = format_input(input, &config, Some(&mut data))?;
929+
format_input(input, &config, Some(&mut data))?;
943930

944931
let mut lines = data.lines();
945932
let mut chunks = Vec::new();
@@ -963,12 +950,7 @@ fn get_modified_lines(
963950
lines: added_lines,
964951
});
965952
}
966-
Ok(ModifiedLinesResult {
967-
summary,
968-
filemap,
969-
report,
970-
modified_lines: ModifiedLines { chunks },
971-
})
953+
Ok(ModifiedLines { chunks })
972954
}
973955

974956
#[derive(Debug)]
@@ -982,7 +964,7 @@ pub fn format_and_emit_report(input: Input, config: &Config) -> Result<Summary,
982964
return Err(format_err!("Version mismatch"));
983965
}
984966
let out = &mut stdout();
985-
match format_input(input, config, Some(out)) {
967+
match syntax::with_globals(|| format_input_inner(input, config, Some(out))) {
986968
Ok((summary, _, report)) => {
987969
if report.has_warnings() {
988970
match term::stderr() {

src/rewrite.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub struct RewriteContext<'a> {
3939
// When rewriting chain, veto going multi line except the last element
4040
pub force_one_line_chain: RefCell<bool>,
4141
pub snippet_provider: &'a SnippetProvider<'a>,
42-
pub report: FormatReport,
42+
pub(crate) report: FormatReport,
4343
}
4444

4545
impl<'a> RewriteContext<'a> {

src/test/mod.rs

+20-24
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
extern crate assert_cli;
1212

13+
use syntax;
14+
1315
use std::collections::{HashMap, HashSet};
1416
use std::env;
1517
use std::fs;
@@ -143,7 +145,7 @@ fn modified_test() {
143145
let filename = "tests/writemode/source/modified.rs";
144146
let result = get_modified_lines(Input::File(filename.into()), &Config::default()).unwrap();
145147
assert_eq!(
146-
result.modified_lines,
148+
result,
147149
ModifiedLines {
148150
chunks: vec![
149151
ModifiedChunk {
@@ -240,19 +242,13 @@ fn self_tests() {
240242
#[test]
241243
fn stdin_formatting_smoke_test() {
242244
let input = Input::Text("fn main () {}".to_owned());
243-
let config = Config::default();
244-
let (error_summary, file_map, _report) =
245-
format_input::<io::Stdout>(input, &config, None).unwrap();
245+
let mut config = Config::default();
246+
config.set().write_mode(WriteMode::Display);
247+
let mut buf: Vec<u8> = vec![];
248+
let error_summary = format_input(input, &config, Some(&mut buf)).unwrap();
246249
assert!(error_summary.has_no_errors());
247-
for &(ref file_name, ref text) in &file_map {
248-
if let FileName::Custom(ref file_name) = *file_name {
249-
if file_name == "stdin" {
250-
assert_eq!(text.to_string(), "fn main() {}\n");
251-
return;
252-
}
253-
}
254-
}
255-
panic!("no stdin");
250+
//eprintln!("{:?}", );
251+
assert_eq!(buf, "fn main() {}\n".as_bytes());
256252
}
257253

258254
// FIXME(#1990) restore this test
@@ -284,8 +280,7 @@ fn format_lines_errors_are_reported() {
284280
let input = Input::Text(format!("fn {}() {{}}", long_identifier));
285281
let mut config = Config::default();
286282
config.set().error_on_line_overflow(true);
287-
let (error_summary, _file_map, _report) =
288-
format_input::<io::Stdout>(input, &config, None).unwrap();
283+
let error_summary = format_input::<io::Stdout>(input, &config, None).unwrap();
289284
assert!(error_summary.has_formatting_errors());
290285
}
291286

@@ -296,8 +291,7 @@ fn format_lines_errors_are_reported_with_tabs() {
296291
let mut config = Config::default();
297292
config.set().error_on_line_overflow(true);
298293
config.set().hard_tabs(true);
299-
let (error_summary, _file_map, _report) =
300-
format_input::<io::Stdout>(input, &config, None).unwrap();
294+
let error_summary = format_input::<io::Stdout>(input, &config, None).unwrap();
301295
assert!(error_summary.has_formatting_errors());
302296
}
303297

@@ -382,7 +376,8 @@ fn read_config(filename: &Path) -> Config {
382376
fn format_file<P: Into<PathBuf>>(filepath: P, config: &Config) -> (Summary, FileMap, FormatReport) {
383377
let filepath = filepath.into();
384378
let input = Input::File(filepath);
385-
format_input::<io::Stdout>(input, config, None).unwrap()
379+
//format_input::<io::Stdout>(input, config, None).unwrap()
380+
syntax::with_globals(|| format_input_inner::<io::Stdout>(input, config, None)).unwrap()
386381
}
387382

388383
pub enum IdempotentCheckError {
@@ -757,8 +752,7 @@ impl ConfigCodeBlock {
757752
});
758753
}
759754

760-
fn formatted_has_diff(&self, file_map: &FileMap) -> bool {
761-
let &(ref _file_name, ref text) = file_map.first().unwrap();
755+
fn formatted_has_diff(&self, text: &str) -> bool {
762756
let compare = make_diff(self.code_block.as_ref().unwrap(), text, DIFF_CONTEXT_SIZE);
763757
if !compare.is_empty() {
764758
self.print_diff(compare);
@@ -778,12 +772,14 @@ impl ConfigCodeBlock {
778772
}
779773

780774
let input = Input::Text(self.code_block.as_ref().unwrap().to_owned());
781-
let config = self.get_block_config();
775+
let mut config = self.get_block_config();
776+
config.set().write_mode(WriteMode::Display);
777+
let mut buf: Vec<u8> = vec![];
782778

783-
let (error_summary, file_map, _report) =
784-
format_input::<io::Stdout>(input, &config, None).unwrap();
779+
let error_summary = format_input(input, &config, Some(&mut buf)).unwrap();
785780

786-
!self.has_parsing_errors(error_summary) && !self.formatted_has_diff(&file_map)
781+
!self.has_parsing_errors(error_summary)
782+
&& !self.formatted_has_diff(&String::from_utf8(buf).unwrap())
787783
}
788784

789785
// Extract a code block from the iterator. Behavior:

src/visitor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ pub struct FmtVisitor<'a> {
7070
pub snippet_provider: &'a SnippetProvider<'a>,
7171
pub line_number: usize,
7272
pub skipped_range: Vec<(usize, usize)>,
73-
pub report: FormatReport,
73+
pub(crate) report: FormatReport,
7474
}
7575

7676
impl<'b, 'a: 'b> FmtVisitor<'a> {
@@ -561,7 +561,7 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
561561
)
562562
}
563563

564-
pub fn from_codemap(
564+
pub(crate) fn from_codemap(
565565
parse_session: &'a ParseSess,
566566
config: &'a Config,
567567
snippet_provider: &'a SnippetProvider,

0 commit comments

Comments
 (0)