diff options
| author | bors <bors@rust-lang.org> | 2020-09-26 01:36:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-09-26 01:36:50 +0000 |
| commit | c6622d1d05d1ea58cfd9b56cc3a91b2c17316c96 (patch) | |
| tree | cf6a3a83acac49fed56f127a105fa6d50fed6633 /compiler/rustc_codegen_llvm/src | |
| parent | 043f6d747c15068f0053a0542e9b0f17ae7f4de4 (diff) | |
| parent | 5946c12476b488dbc4555741321321a1cbd4d68c (diff) | |
| download | rust-c6622d1d05d1ea58cfd9b56cc3a91b2c17316c96.tar.gz rust-c6622d1d05d1ea58cfd9b56cc3a91b2c17316c96.zip | |
Auto merge of #76176 - marmeladema:fix-closure-path-printing, r=eddyb
Move from {{closure}}#0 syntax to {closure#0} for (def) path components
Part of #70334
I followed the approach described by `@eddyb` and introduced a `DefPathDataName` enum.
To preserve compatibility, in various places, I had to rely on formatting manually by calling `format!("{{{{{}}}}}", namespace)`.
My questions are:
* Do we want to convert for places to use the new naming scheme? Or shall I re-add `DefPathData::as_symbol` but renamed as `DefPathData::as_legacy_symbol` to avoid manually allocating the legacy symbols?
* Do we want to `impl Display for DisambiguatedDefPathData` to avoid manually calling `write!(s, "{{{}#{}}}", namespace, component.disambiguator)`?
* We might also want to improve naming for `DefPathDataName` and `DefPathData::get_name`
r? `@eddyb`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/debuginfo/namespace.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/namespace.rs b/compiler/rustc_codegen_llvm/src/debuginfo/namespace.rs index d1a55335c44..9945d4f4282 100644 --- a/compiler/rustc_codegen_llvm/src/debuginfo/namespace.rs +++ b/compiler/rustc_codegen_llvm/src/debuginfo/namespace.rs @@ -27,11 +27,18 @@ pub fn item_namespace(cx: &CodegenCx<'ll, '_>, def_id: DefId) -> &'ll DIScope { .parent .map(|parent| item_namespace(cx, DefId { krate: def_id.krate, index: parent })); + let crate_name_as_str; + let name_to_string; let namespace_name = match def_key.disambiguated_data.data { - DefPathData::CrateRoot => cx.tcx.crate_name(def_id.krate), - data => data.as_symbol(), + DefPathData::CrateRoot => { + crate_name_as_str = cx.tcx.crate_name(def_id.krate).as_str(); + &*crate_name_as_str + } + data => { + name_to_string = data.to_string(); + &*name_to_string + } }; - let namespace_name = namespace_name.as_str(); let scope = unsafe { llvm::LLVMRustDIBuilderCreateNameSpace( |
