Add sanity check.
We force the relative span's parent to be absolute. This avoids having to handle long dependency chains.
This commit is contained in:
parent
940fa9251e
commit
fb5ced0fbd
3 changed files with 9 additions and 3 deletions
|
@ -788,7 +788,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||||
node_id,
|
node_id,
|
||||||
DefPathData::LifetimeNs(str_name),
|
DefPathData::LifetimeNs(str_name),
|
||||||
ExpnId::root(),
|
ExpnId::root(),
|
||||||
span,
|
span.with_parent(None),
|
||||||
);
|
);
|
||||||
|
|
||||||
hir::GenericParam {
|
hir::GenericParam {
|
||||||
|
@ -1520,7 +1520,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||||
def_node_id,
|
def_node_id,
|
||||||
DefPathData::LifetimeNs(name.ident().name),
|
DefPathData::LifetimeNs(name.ident().name),
|
||||||
ExpnId::root(),
|
ExpnId::root(),
|
||||||
span,
|
span.with_parent(None),
|
||||||
);
|
);
|
||||||
|
|
||||||
let (name, kind) = match name {
|
let (name, kind) = match name {
|
||||||
|
|
|
@ -345,6 +345,8 @@ impl Definitions {
|
||||||
assert_eq!(root.local_def_index, CRATE_DEF_INDEX);
|
assert_eq!(root.local_def_index, CRATE_DEF_INDEX);
|
||||||
|
|
||||||
let mut def_id_to_span = IndexVec::new();
|
let mut def_id_to_span = IndexVec::new();
|
||||||
|
// A relative span's parent must be an absolute span.
|
||||||
|
debug_assert_eq!(crate_span.data_untracked().parent, None);
|
||||||
let _root = def_id_to_span.push(crate_span);
|
let _root = def_id_to_span.push(crate_span);
|
||||||
debug_assert_eq!(_root, root);
|
debug_assert_eq!(_root, root);
|
||||||
|
|
||||||
|
@ -394,6 +396,8 @@ impl Definitions {
|
||||||
self.expansions_that_defined.insert(def_id, expn_id);
|
self.expansions_that_defined.insert(def_id, expn_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A relative span's parent must be an absolute span.
|
||||||
|
debug_assert_eq!(span.data_untracked().parent, None);
|
||||||
let _id = self.def_id_to_span.push(span);
|
let _id = self.def_id_to_span.push(span);
|
||||||
debug_assert_eq!(_id, def_id);
|
debug_assert_eq!(_id, def_id);
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,9 @@ fn span_debug(span: rustc_span::Span, f: &mut fmt::Formatter<'_>) -> fmt::Result
|
||||||
fn track_span_parent(def_id: rustc_span::def_id::LocalDefId) {
|
fn track_span_parent(def_id: rustc_span::def_id::LocalDefId) {
|
||||||
tls::with_opt(|tcx| {
|
tls::with_opt(|tcx| {
|
||||||
if let Some(tcx) = tcx {
|
if let Some(tcx) = tcx {
|
||||||
let _ = tcx.source_span(def_id);
|
let _span = tcx.source_span(def_id);
|
||||||
|
// Sanity check: relative span's parent must be an absolute span.
|
||||||
|
debug_assert_eq!(_span.data_untracked().parent, None);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue