about summary refs log tree commit diff
path: root/compiler/rustc_errors/src/json/tests.rs
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2022-02-09 17:05:44 -0500
committerMark Rousskov <mark.simulacrum@gmail.com>2022-02-20 18:58:21 -0500
commit60b71f56e73fc139eababa00aa8f1b740cb7d445 (patch)
tree497c5e5168d7d22c777471fbc199da6cc5c575ae /compiler/rustc_errors/src/json/tests.rs
parent45e2c2881d11324d610815bfff097e25c412199e (diff)
downloadrust-60b71f56e73fc139eababa00aa8f1b740cb7d445.tar.gz
rust-60b71f56e73fc139eababa00aa8f1b740cb7d445.zip
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).
Diffstat (limited to 'compiler/rustc_errors/src/json/tests.rs')
-rw-r--r--compiler/rustc_errors/src/json/tests.rs27
1 files changed, 15 insertions, 12 deletions
diff --git a/compiler/rustc_errors/src/json/tests.rs b/compiler/rustc_errors/src/json/tests.rs
index c5b3d204407..ed01afe6e30 100644
--- a/compiler/rustc_errors/src/json/tests.rs
+++ b/compiler/rustc_errors/src/json/tests.rs
@@ -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);
     })
 }