diff --git a/Cargo.toml b/Cargo.toml index fb7125f..7d02f0b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,11 +10,13 @@ filetime = "0.1" getopts = "0.2" log = "0.4" regex = "0.2" -rustc-serialize = "0.3" +serde = "1.0" +serde_json = "1.0" +serde_derive = "1.0" [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(windows)'.dependencies] -miow = "0.2" -winapi = "0.2" +miow = "0.3" +winapi = { version = "0.3", features = ["winerror"] } diff --git a/src/json.rs b/src/json.rs index 8e9cd1a..0863062 100644 --- a/src/json.rs +++ b/src/json.rs @@ -9,7 +9,7 @@ // except according to those terms. use errors::{Error, ErrorKind}; -use rustc_serialize::json; +use serde_json; use std::str::FromStr; use std::path::Path; use runtest::ProcRes; @@ -17,17 +17,16 @@ use runtest::ProcRes; // These structs are a subset of the ones found in // `syntax::json`. -#[derive(RustcEncodable, RustcDecodable)] +#[derive(Deserialize)] struct Diagnostic { message: String, code: Option, level: String, spans: Vec, children: Vec, - rendered: Option, } -#[derive(RustcEncodable, RustcDecodable, Clone)] +#[derive(Deserialize, Clone)] struct DiagnosticSpan { file_name: String, line_start: usize, @@ -40,7 +39,7 @@ struct DiagnosticSpan { expansion: Option>, } -#[derive(RustcEncodable, RustcDecodable, Clone)] +#[derive(Deserialize, Clone)] struct DiagnosticSpanMacroExpansion { /// span where macro was applied to generate this code span: DiagnosticSpan, @@ -49,7 +48,7 @@ struct DiagnosticSpanMacroExpansion { macro_decl_name: String, } -#[derive(RustcEncodable, RustcDecodable, Clone)] +#[derive(Deserialize, Clone)] struct DiagnosticCode { /// The code itself. code: String, @@ -67,7 +66,7 @@ fn parse_line(file_name: &str, line: &str, output: &str, proc_res: &ProcRes) -> // The compiler sometimes intermingles non-JSON stuff into the // output. This hack just skips over such lines. Yuck. if line.starts_with('{') { - match json::decode::(line) { + match serde_json::from_str::(line) { Ok(diagnostic) => { let mut expected_errors = vec![]; push_expected_errors(&mut expected_errors, &diagnostic, &[], file_name); diff --git a/src/main.rs b/src/main.rs index 7928cab..e65c03a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,8 +21,10 @@ extern crate getopts; extern crate libc; #[macro_use] extern crate log; -extern crate rustc_serialize; extern crate regex; +#[macro_use] +extern crate serde_derive; +extern crate serde_json; extern crate test; use std::env; diff --git a/src/read2.rs b/src/read2.rs index 486c0d8..4f55edc 100644 --- a/src/read2.rs +++ b/src/read2.rs @@ -119,7 +119,7 @@ mod imp { use self::miow::iocp::{CompletionPort, CompletionStatus}; use self::miow::pipe::NamedPipe; use self::miow::Overlapped; - use self::winapi::ERROR_BROKEN_PIPE; + use self::winapi::shared::winerror::ERROR_BROKEN_PIPE; struct Pipe<'a> { dst: &'a mut Vec,