Fix infinite recursion in <DepNode as Debug>.
This commit is contained in:
parent
bd36dcf7aa
commit
b50e8ebbba
8 changed files with 37 additions and 37 deletions
|
@ -356,7 +356,7 @@ impl fmt::Debug for DepNode {
|
||||||
::ty::tls::with_opt(|opt_tcx| {
|
::ty::tls::with_opt(|opt_tcx| {
|
||||||
if let Some(tcx) = opt_tcx {
|
if let Some(tcx) = opt_tcx {
|
||||||
if let Some(def_id) = self.extract_def_id(tcx) {
|
if let Some(def_id) = self.extract_def_id(tcx) {
|
||||||
write!(f, "{}", tcx.def_path(def_id).to_string(tcx))?;
|
write!(f, "{}", tcx.def_path_debug_str(def_id))?;
|
||||||
} else if let Some(ref s) = tcx.dep_graph.dep_node_debug_str(*self) {
|
} else if let Some(ref s) = tcx.dep_graph.dep_node_debug_str(*self) {
|
||||||
write!(f, "{}", s)?;
|
write!(f, "{}", s)?;
|
||||||
} else {
|
} else {
|
||||||
|
@ -700,8 +700,8 @@ impl<'a, 'gcx: 'tcx + 'a, 'tcx: 'a> DepNodeParams<'a, 'gcx, 'tcx> for (DefId, De
|
||||||
let (def_id_0, def_id_1) = *self;
|
let (def_id_0, def_id_1) = *self;
|
||||||
|
|
||||||
format!("({}, {})",
|
format!("({}, {})",
|
||||||
tcx.def_path(def_id_0).to_string(tcx),
|
tcx.def_path_debug_str(def_id_0),
|
||||||
tcx.def_path(def_id_1).to_string(tcx))
|
tcx.def_path_debug_str(def_id_1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -577,7 +577,7 @@ impl DepGraph {
|
||||||
"DepGraph::try_mark_green() - Duplicate DepNodeColor \
|
"DepGraph::try_mark_green() - Duplicate DepNodeColor \
|
||||||
insertion for {:?}", dep_node);
|
insertion for {:?}", dep_node);
|
||||||
|
|
||||||
debug!("try_mark_green({:?}) - END - successfully marked as green", dep_node.kind);
|
debug!("try_mark_green({:?}) - END - successfully marked as green", dep_node);
|
||||||
Some(dep_node_index)
|
Some(dep_node_index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -197,12 +197,12 @@ pub struct DefId {
|
||||||
|
|
||||||
impl fmt::Debug for DefId {
|
impl fmt::Debug for DefId {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(f, "DefId {{ krate: {:?}, node: {:?}",
|
write!(f, "DefId {{ krate: {:?}, index: {:?}",
|
||||||
self.krate, self.index)?;
|
self.krate, self.index)?;
|
||||||
|
|
||||||
ty::tls::with_opt(|opt_tcx| {
|
ty::tls::with_opt(|opt_tcx| {
|
||||||
if let Some(tcx) = opt_tcx {
|
if let Some(tcx) = opt_tcx {
|
||||||
write!(f, " => {}", tcx.def_path(*self).to_string(tcx))?;
|
write!(f, " => {}", tcx.def_path_debug_str(*self))?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
|
|
|
@ -27,7 +27,6 @@ use std::hash::Hash;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::ext::hygiene::Mark;
|
use syntax::ext::hygiene::Mark;
|
||||||
use syntax::symbol::{Symbol, InternedString};
|
use syntax::symbol::{Symbol, InternedString};
|
||||||
use ty::TyCtxt;
|
|
||||||
use util::nodemap::NodeMap;
|
use util::nodemap::NodeMap;
|
||||||
|
|
||||||
/// The DefPathTable maps DefIndexes to DefKeys and vice versa.
|
/// The DefPathTable maps DefIndexes to DefKeys and vice versa.
|
||||||
|
@ -296,26 +295,6 @@ impl DefPath {
|
||||||
DefPath { data: data, krate: krate }
|
DefPath { data: data, krate: krate }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_string(&self, tcx: TyCtxt) -> String {
|
|
||||||
let mut s = String::with_capacity(self.data.len() * 16);
|
|
||||||
|
|
||||||
s.push_str(&tcx.original_crate_name(self.krate).as_str());
|
|
||||||
s.push_str("/");
|
|
||||||
// Don't print the whole crate disambiguator. That's just annoying in
|
|
||||||
// debug output.
|
|
||||||
s.push_str(&tcx.crate_disambiguator(self.krate).as_str()[..7]);
|
|
||||||
|
|
||||||
for component in &self.data {
|
|
||||||
write!(s,
|
|
||||||
"::{}[{}]",
|
|
||||||
component.data.as_interned_str(),
|
|
||||||
component.disambiguator)
|
|
||||||
.unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
s
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns a string representation of the DefPath without
|
/// Returns a string representation of the DefPath without
|
||||||
/// the crate-prefix. This method is useful if you don't have
|
/// the crate-prefix. This method is useful if you don't have
|
||||||
/// a TyCtxt available.
|
/// a TyCtxt available.
|
||||||
|
|
|
@ -1219,6 +1219,27 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn def_path_debug_str(self, def_id: DefId) -> String {
|
||||||
|
// We are explicitly not going through queries here in order to get
|
||||||
|
// crate name and disambiguator since this code is called from debug!()
|
||||||
|
// statements within the query system and we'd run into endless
|
||||||
|
// recursion otherwise.
|
||||||
|
let (crate_name, crate_disambiguator) = if def_id.is_local() {
|
||||||
|
(self.crate_name.clone(),
|
||||||
|
self.sess.local_crate_disambiguator())
|
||||||
|
} else {
|
||||||
|
(self.cstore.crate_name_untracked(def_id.krate),
|
||||||
|
self.cstore.crate_disambiguator_untracked(def_id.krate))
|
||||||
|
};
|
||||||
|
|
||||||
|
format!("{}[{}]{}",
|
||||||
|
crate_name,
|
||||||
|
// Don't print the whole crate disambiguator. That's just
|
||||||
|
// annoying in debug output.
|
||||||
|
&(crate_disambiguator.as_str())[..4],
|
||||||
|
self.def_path(def_id).to_string_no_crate())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn metadata_encoding_version(self) -> Vec<u8> {
|
pub fn metadata_encoding_version(self) -> Vec<u8> {
|
||||||
self.cstore.metadata_encoding_version().to_vec()
|
self.cstore.metadata_encoding_version().to_vec()
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ fn main() {
|
||||||
// END RUST SOURCE
|
// END RUST SOURCE
|
||||||
// START rustc.node12.EraseRegions.after.mir
|
// START rustc.node12.EraseRegions.after.mir
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(0:5) => validate_1/8cd878b::{{impl}}[0]::foo[0] }, BrAnon(0)) Test, _2: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(0:5) => validate_1/8cd878b::{{impl}}[0]::foo[0] }, BrAnon(1)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:5) => validate_1[8cd8]::{{impl}}[0]::foo[0] }, BrAnon(0)) Test, _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:5) => validate_1[8cd8]::{{impl}}[0]::foo[0] }, BrAnon(1)) mut i32]);
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// END rustc.node12.EraseRegions.after.mir
|
// END rustc.node12.EraseRegions.after.mir
|
||||||
|
@ -57,7 +57,7 @@ fn main() {
|
||||||
// START rustc.node50.EraseRegions.after.mir
|
// START rustc.node50.EraseRegions.after.mir
|
||||||
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(50)], _2: &ReErased mut i32) -> i32 {
|
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(50)], _2: &ReErased mut i32) -> i32 {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:11) => validate_1/8cd878b::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(50)], _2: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:11) => validate_1/8cd878b::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:11) => validate_1[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(50)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:11) => validate_1[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
||||||
// StorageLive(_3);
|
// StorageLive(_3);
|
||||||
// _3 = _2;
|
// _3 = _2;
|
||||||
// StorageLive(_4);
|
// StorageLive(_4);
|
||||||
|
|
|
@ -48,8 +48,8 @@ fn main() {
|
||||||
// START rustc.node22.EraseRegions.after.mir
|
// START rustc.node22.EraseRegions.after.mir
|
||||||
// fn write_42::{{closure}}(_1: &ReErased [closure@NodeId(22)], _2: *mut i32) -> () {
|
// fn write_42::{{closure}}(_1: &ReErased [closure@NodeId(22)], _2: *mut i32) -> () {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:9) => validate_4/8cd878b::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_4[8cd8]::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
|
||||||
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:9) => validate_4/8cd878b::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
|
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_4[8cd8]::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
|
||||||
// StorageLive(_3);
|
// StorageLive(_3);
|
||||||
// _3 = _2;
|
// _3 = _2;
|
||||||
// (*_3) = const 23i32;
|
// (*_3) = const 23i32;
|
||||||
|
@ -61,8 +61,8 @@ fn main() {
|
||||||
// START rustc.node31.EraseRegions.after.mir
|
// START rustc.node31.EraseRegions.after.mir
|
||||||
// fn test(_1: &ReErased mut i32) -> () {
|
// fn test(_1: &ReErased mut i32) -> () {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(0:4) => validate_4/8cd878b::test[0] }, BrAnon(0)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_4[8cd8]::test[0] }, BrAnon(0)) mut i32]);
|
||||||
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(0:4) => validate_4/8cd878b::test[0] }, BrAnon(0)) mut i32]);
|
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_4[8cd8]::test[0] }, BrAnon(0)) mut i32]);
|
||||||
// _3 = const write_42(_4) -> bb1;
|
// _3 = const write_42(_4) -> bb1;
|
||||||
// }
|
// }
|
||||||
// bb1: {
|
// bb1: {
|
||||||
|
@ -74,8 +74,8 @@ fn main() {
|
||||||
// START rustc.node60.EraseRegions.after.mir
|
// START rustc.node60.EraseRegions.after.mir
|
||||||
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(60)], _2: &ReErased mut i32) -> bool {
|
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(60)], _2: &ReErased mut i32) -> bool {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:10) => validate_4/8cd878b::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:10) => validate_4/8cd878b::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
||||||
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:10) => validate_4/8cd878b::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:10) => validate_4/8cd878b::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
// Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
||||||
// StorageLive(_3);
|
// StorageLive(_3);
|
||||||
// _0 = const write_42(_4) -> bb1;
|
// _0 = const write_42(_4) -> bb1;
|
||||||
// }
|
// }
|
||||||
|
|
|
@ -36,7 +36,7 @@ fn main() {
|
||||||
// START rustc.node17.EraseRegions.after.mir
|
// START rustc.node17.EraseRegions.after.mir
|
||||||
// fn test(_1: &ReErased mut i32) -> () {
|
// fn test(_1: &ReErased mut i32) -> () {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(0:4) => validate_5/8cd878b::test[0] }, BrAnon(0)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_5[8cd8]::test[0] }, BrAnon(0)) mut i32]);
|
||||||
// Validate(Release, [_3: bool, _4: *mut i32]);
|
// Validate(Release, [_3: bool, _4: *mut i32]);
|
||||||
// _3 = const write_42(_4) -> bb1;
|
// _3 = const write_42(_4) -> bb1;
|
||||||
// }
|
// }
|
||||||
|
@ -45,7 +45,7 @@ fn main() {
|
||||||
// START rustc.node46.EraseRegions.after.mir
|
// START rustc.node46.EraseRegions.after.mir
|
||||||
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(46)], _2: &ReErased mut i32) -> bool {
|
// fn main::{{closure}}(_1: &ReErased [closure@NodeId(46)], _2: &ReErased mut i32) -> bool {
|
||||||
// bb0: {
|
// bb0: {
|
||||||
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:9) => validate_5/8cd878b::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(46)], _2: &ReFree(DefId { krate: CrateNum(0), node: DefIndex(1:9) => validate_5/8cd878b::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
// Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_5[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(46)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_5[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
|
||||||
// StorageLive(_3);
|
// StorageLive(_3);
|
||||||
// _3 = _2;
|
// _3 = _2;
|
||||||
// StorageLive(_4);
|
// StorageLive(_4);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue