Remove support for JSON deserialization to Rust
This is no longer used by the compiler itself, and removing this support opens the door to massively simplifying the Decodable/Decoder API by dropping the self-describing deserialization support (necessary for JSON).
This commit is contained in:
parent
45e2c2881d
commit
60b71f56e7
9 changed files with 46 additions and 718 deletions
|
@ -5,17 +5,12 @@ use rustc_span::source_map::{FilePathMapping, SourceMap};
|
|||
|
||||
use crate::emitter::{ColorConfig, HumanReadableErrorType};
|
||||
use crate::Handler;
|
||||
use rustc_serialize::json::decode;
|
||||
use rustc_serialize::json;
|
||||
use rustc_span::{BytePos, Span};
|
||||
|
||||
use std::str;
|
||||
|
||||
#[derive(Decodable, Debug, PartialEq, Eq)]
|
||||
struct TestData {
|
||||
spans: Vec<SpanTestData>,
|
||||
}
|
||||
|
||||
#[derive(Decodable, Debug, PartialEq, Eq)]
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
struct SpanTestData {
|
||||
pub byte_start: u32,
|
||||
pub byte_end: u32,
|
||||
|
@ -41,8 +36,6 @@ impl<T: Write> Write for Shared<T> {
|
|||
|
||||
/// Test the span yields correct positions in JSON.
|
||||
fn test_positions(code: &str, span: (u32, u32), expected_output: SpanTestData) {
|
||||
let expected_output = TestData { spans: vec![expected_output] };
|
||||
|
||||
rustc_span::create_default_session_globals_then(|| {
|
||||
let sm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
|
||||
sm.new_source_file(Path::new("test.rs").to_owned().into(), code.to_owned());
|
||||
|
@ -64,9 +57,19 @@ 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: TestData = decode(actual_output);
|
||||
|
||||
assert_eq!(expected_output, actual_output)
|
||||
let actual_output = json::from_str(&actual_output).unwrap();
|
||||
let spans = actual_output["spans"].as_array().unwrap();
|
||||
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);
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue