use errors::DiagnosticBuilder;
use std::slice;
use rustc_data_structures::sync::{self, ParallelIterator, join, par_iter};
-use rustc_serialize::{Decoder, Decodable, Encoder, Encodable};
use syntax::ast;
use syntax::util::lev_distance::find_best_match_for_name;
use syntax::visit as ast_visit;
/// Lints that are buffered up early on in the `Session` before the
/// `LintLevels` is calculated
-#[derive(PartialEq, RustcEncodable, RustcDecodable, Debug)]
+#[derive(PartialEq, Debug)]
pub struct BufferedEarlyLint {
pub lint_id: LintId,
pub ast_id: ast::NodeId,
}
}
}
-
-impl Encodable for LintId {
- fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
- s.emit_str(&self.lint.name.to_lowercase())
- }
-}
-
-impl Decodable for LintId {
- #[inline]
- fn decode<D: Decoder>(d: &mut D) -> Result<LintId, D::Error> {
- let s = d.read_str()?;
- ty::tls::with(|tcx| {
- match tcx.lint_store.find_lints(&s) {
- Ok(ids) => {
- if ids.len() != 0 {
- panic!("invalid lint-id `{}`", s);
- }
- Ok(ids[0])
- }
- Err(_) => panic!("invalid lint-id `{}`", s),
- }
- })
- }
-}