Add lint for intra link resolution failure
This commit is contained in:
parent
40f20b5327
commit
b000cf0726
5 changed files with 76 additions and 9 deletions
|
|
@ -21,7 +21,7 @@ pub use self::Visibility::{Public, Inherited};
|
|||
|
||||
use syntax;
|
||||
use rustc_target::spec::abi::Abi;
|
||||
use syntax::ast::{self, AttrStyle, Ident};
|
||||
use syntax::ast::{self, AttrStyle, NodeId, Ident};
|
||||
use syntax::attr;
|
||||
use syntax::codemap::{dummy_spanned, Spanned};
|
||||
use syntax::feature_gate::UnstableFeatures;
|
||||
|
|
@ -46,9 +46,10 @@ use rustc::middle::stability;
|
|||
use rustc::util::nodemap::{FxHashMap, FxHashSet};
|
||||
use rustc_typeck::hir_ty_to_ty;
|
||||
use rustc::infer::region_constraints::{RegionConstraintData, Constraint};
|
||||
use rustc::lint as lint;
|
||||
|
||||
use std::collections::hash_map::Entry;
|
||||
use std::fmt;
|
||||
|
||||
use std::default::Default;
|
||||
use std::{mem, slice, vec};
|
||||
use std::iter::{FromIterator, once};
|
||||
|
|
@ -1283,10 +1284,16 @@ fn resolution_failure(
|
|||
link_range.end + code_dox_len,
|
||||
);
|
||||
|
||||
diag = cx.sess().struct_span_warn(sp, &msg);
|
||||
diag = cx.tcx.struct_span_lint_node(lint::builtin::INTRA_LINK_RESOLUTION_FAILURE,
|
||||
NodeId::new(0),
|
||||
sp,
|
||||
&msg);
|
||||
diag.span_label(sp, "cannot be resolved, ignoring");
|
||||
} else {
|
||||
diag = cx.sess().struct_span_warn(sp, &msg);
|
||||
diag = cx.tcx.struct_span_lint_node(lint::builtin::INTRA_LINK_RESOLUTION_FAILURE,
|
||||
NodeId::new(0),
|
||||
sp,
|
||||
&msg);
|
||||
|
||||
let last_new_line_offset = dox[..link_range.start].rfind('\n').map_or(0, |n| n + 1);
|
||||
let line = dox[last_new_line_offset..].lines().next().unwrap_or("");
|
||||
|
|
@ -1303,7 +1310,10 @@ fn resolution_failure(
|
|||
}
|
||||
diag
|
||||
} else {
|
||||
cx.sess().struct_span_warn(sp, &msg)
|
||||
cx.tcx.struct_span_lint_node(lint::builtin::INTRA_LINK_RESOLUTION_FAILURE,
|
||||
NodeId::new(0),
|
||||
sp,
|
||||
&msg)
|
||||
};
|
||||
diag.emit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ use rustc::middle::cstore::CrateStore;
|
|||
use rustc::middle::privacy::AccessLevels;
|
||||
use rustc::ty::{self, TyCtxt, AllArenas};
|
||||
use rustc::hir::map as hir_map;
|
||||
use rustc::lint;
|
||||
use rustc::lint::{self, LintPass};
|
||||
use rustc::session::config::ErrorOutputType;
|
||||
use rustc::util::nodemap::{FxHashMap, FxHashSet};
|
||||
use rustc_resolve as resolve;
|
||||
|
|
@ -187,7 +187,23 @@ pub fn run_core(search_paths: SearchPaths,
|
|||
_ => None
|
||||
};
|
||||
|
||||
let warning_lint = lint::builtin::WARNINGS.name_lower();
|
||||
let intra_link_resolution_failure_name = lint::builtin::INTRA_LINK_RESOLUTION_FAILURE.name;
|
||||
let warnings_lint_name = lint::builtin::WARNINGS.name;
|
||||
let lints = lint::builtin::HardwiredLints.get_lints()
|
||||
.iter()
|
||||
.filter_map(|lint| {
|
||||
if lint.name == warnings_lint_name {
|
||||
None
|
||||
} else {
|
||||
let level = if lint.name == intra_link_resolution_failure_name {
|
||||
lint::Warn
|
||||
} else {
|
||||
lint::Allow
|
||||
};
|
||||
Some((lint.name_lower(), level))
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let host_triple = TargetTriple::from_triple(config::host_triple());
|
||||
// plays with error output here!
|
||||
|
|
@ -195,8 +211,12 @@ pub fn run_core(search_paths: SearchPaths,
|
|||
maybe_sysroot,
|
||||
search_paths,
|
||||
crate_types: vec![config::CrateTypeRlib],
|
||||
lint_opts: if !allow_warnings { vec![(warning_lint, lint::Allow)] } else { vec![] },
|
||||
lint_cap: Some(lint::Allow),
|
||||
lint_opts: if !allow_warnings {
|
||||
lints
|
||||
} else {
|
||||
vec![]
|
||||
},
|
||||
lint_cap: Some(lint::Warn),
|
||||
cg,
|
||||
externs,
|
||||
target_triple: triple.unwrap_or(host_triple),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue