Use serde_json for json error messages
This commit is contained in:
parent
fc1df4ff17
commit
62a4f91a5a
6 changed files with 39 additions and 33 deletions
|
@ -5,12 +5,18 @@ use rustc_span::source_map::{FilePathMapping, SourceMap};
|
|||
|
||||
use crate::emitter::{ColorConfig, HumanReadableErrorType};
|
||||
use crate::Handler;
|
||||
use rustc_serialize::json;
|
||||
use rustc_span::{BytePos, Span};
|
||||
|
||||
use std::str;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
struct TestData {
|
||||
spans: Vec<SpanTestData>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
struct SpanTestData {
|
||||
pub byte_start: u32,
|
||||
pub byte_end: u32,
|
||||
|
@ -61,19 +67,11 @@ fn test_positions(code: &str, span: (u32, u32), expected_output: SpanTestData) {
|
|||
|
||||
let bytes = output.lock().unwrap();
|
||||
let actual_output = str::from_utf8(&bytes).unwrap();
|
||||
let actual_output = json::from_str(&actual_output).unwrap();
|
||||
let spans = actual_output["spans"].as_array().unwrap();
|
||||
let actual_output: TestData = serde_json::from_str(actual_output).unwrap();
|
||||
let spans = actual_output.spans;
|
||||
assert_eq!(spans.len(), 1);
|
||||
let obj = &spans[0];
|
||||
let actual_output = SpanTestData {
|
||||
byte_start: obj["byte_start"].as_u64().unwrap() as u32,
|
||||
byte_end: obj["byte_end"].as_u64().unwrap() as u32,
|
||||
line_start: obj["line_start"].as_u64().unwrap() as u32,
|
||||
line_end: obj["line_end"].as_u64().unwrap() as u32,
|
||||
column_start: obj["column_start"].as_u64().unwrap() as u32,
|
||||
column_end: obj["column_end"].as_u64().unwrap() as u32,
|
||||
};
|
||||
assert_eq!(expected_output, actual_output);
|
||||
|
||||
assert_eq!(expected_output, spans[0])
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue