diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2017-12-04 17:05:06 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2017-12-07 05:28:01 -0500 |
| commit | 47b8ef51d43850f6f1e371501b9add2f1631cafd (patch) | |
| tree | 5bb535bb6ff16b4b8b1de656635303a0e2e339df /src/libsyntax_pos | |
| parent | 681f54f7950847e6aec4d10bd0565e30d54860dd (diff) | |
| download | rust-47b8ef51d43850f6f1e371501b9add2f1631cafd.tar.gz rust-47b8ef51d43850f6f1e371501b9add2f1631cafd.zip | |
don't print self symbol's internal index unless gensymed
It's just not useful. It also makes it hard to have tests that probe internal state, since the interning number is very sensitive. Dumping the number in the case of gensym is not ideal but will do for now.
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/symbol.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libsyntax_pos/symbol.rs b/src/libsyntax_pos/symbol.rs index 69ddd560213..72760360711 100644 --- a/src/libsyntax_pos/symbol.rs +++ b/src/libsyntax_pos/symbol.rs @@ -123,7 +123,12 @@ impl<'a> From<&'a str> for Symbol { impl fmt::Debug for Symbol { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}({})", self, self.0) + let is_gensymed = with_interner(|interner| interner.is_gensymed(*self)); + if is_gensymed { + write!(f, "{}({})", self, self.0) + } else { + write!(f, "{}", self) + } } } @@ -201,6 +206,10 @@ impl Interner { Symbol(!0 - self.gensyms.len() as u32 + 1) } + fn is_gensymed(&mut self, symbol: Symbol) -> bool { + symbol.0 as usize >= self.strings.len() + } + pub fn get(&self, symbol: Symbol) -> &str { match self.strings.get(symbol.0 as usize) { Some(ref string) => string, |
