about summary refs log tree commit diff
path: root/src/librustc_codegen_utils
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2019-05-29 23:58:55 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2019-05-31 18:23:03 +0300
commit654d0596d3f21c8f774c95324bf79e5d6fbb75d4 (patch)
tree5820099a48e1e98ecda66c9e0e9cfe7ef7e5bd39 /src/librustc_codegen_utils
parente89890514149d31872ba486bbce2f762a2d99f88 (diff)
downloadrust-654d0596d3f21c8f774c95324bf79e5d6fbb75d4.tar.gz
rust-654d0596d3f21c8f774c95324bf79e5d6fbb75d4.zip
rustc_codegen_utils: test demangler output, not just symbol names.
Diffstat (limited to 'src/librustc_codegen_utils')
-rw-r--r--src/librustc_codegen_utils/Cargo.toml1
-rw-r--r--src/librustc_codegen_utils/symbol_names_test.rs8
2 files changed, 7 insertions, 2 deletions
diff --git a/src/librustc_codegen_utils/Cargo.toml b/src/librustc_codegen_utils/Cargo.toml
index c75208b9e06..531c5abb147 100644
--- a/src/librustc_codegen_utils/Cargo.toml
+++ b/src/librustc_codegen_utils/Cargo.toml
@@ -13,6 +13,7 @@ test = false
 [dependencies]
 flate2 = "1.0"
 log = "0.4"
+rustc-demangle = "0.1.15"
 
 syntax = { path = "../libsyntax" }
 syntax_pos = { path = "../libsyntax_pos" }
diff --git a/src/librustc_codegen_utils/symbol_names_test.rs b/src/librustc_codegen_utils/symbol_names_test.rs
index 27ae0b97e59..b935ccb7398 100644
--- a/src/librustc_codegen_utils/symbol_names_test.rs
+++ b/src/librustc_codegen_utils/symbol_names_test.rs
@@ -39,8 +39,12 @@ impl<'a, 'tcx> SymbolNamesTest<'a, 'tcx> {
             if attr.check_name(SYMBOL_NAME) {
                 // for now, can only use on monomorphic names
                 let instance = Instance::mono(tcx, def_id);
-                let name = self.tcx.symbol_name(instance);
-                tcx.sess.span_err(attr.span, &format!("symbol-name({})", name));
+                let mangled = self.tcx.symbol_name(instance);
+                tcx.sess.span_err(attr.span, &format!("symbol-name({})", mangled));
+                if let Ok(demangling) = rustc_demangle::try_demangle(&mangled.as_str()) {
+                    tcx.sess.span_err(attr.span, &format!("demangling({})", demangling));
+                    tcx.sess.span_err(attr.span, &format!("demangling-alt({:#})", demangling));
+                }
             } else if attr.check_name(DEF_PATH) {
                 let path = tcx.def_path_str(def_id);
                 tcx.sess.span_err(attr.span, &format!("def-path({})", path));