Skip to content

Commit 9015c41

Browse files
committed
save_analysis: improve pretty printing of enum
1 parent 51e1724 commit 9015c41

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/librustc_hir_pretty/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,16 @@ pub fn fn_to_string(
239239
to_string(NO_ANN, |s| s.print_fn(decl, header, name, generics, vis, arg_names, body_id))
240240
}
241241

242+
pub fn enum_def_to_string(
243+
enum_definition: &hir::EnumDef<'_>,
244+
generics: &hir::Generics<'_>,
245+
name: Symbol,
246+
span: rustc_span::Span,
247+
visibility: &hir::Visibility<'_>,
248+
) -> String {
249+
to_string(NO_ANN, |s| s.print_enum_def(enum_definition, generics, name, span, visibility))
250+
}
251+
242252
impl<'a> State<'a> {
243253
pub fn cbox(&mut self, u: usize) {
244254
self.s.cbox(u);

src/librustc_save_analysis/lib.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use rustc_hir::def::{CtorOf, DefKind as HirDefKind, Res};
1717
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
1818
use rustc_hir::intravisit::{self, Visitor};
1919
use rustc_hir::Node;
20-
use rustc_hir_pretty::{fn_to_string, ty_to_string};
20+
use rustc_hir_pretty::{enum_def_to_string, fn_to_string, ty_to_string};
2121
use rustc_middle::hir::map::Map;
2222
use rustc_middle::middle::cstore::ExternCrate;
2323
use rustc_middle::middle::privacy::AccessLevels;
@@ -292,13 +292,12 @@ impl<'l, 'tcx> SaveContext<'l, 'tcx> {
292292
attributes: lower_attributes(item.attrs.to_vec(), self),
293293
}))
294294
}
295-
hir::ItemKind::Enum(ref def, _) => {
295+
hir::ItemKind::Enum(ref def, ref generics) => {
296296
let name = item.ident.to_string();
297297
let qualname = format!("::{}", self.tcx.def_path_str(def_id));
298298
filter!(self.span_utils, item.ident.span);
299-
let variants_str =
300-
def.variants.iter().map(|v| v.ident.to_string()).collect::<Vec<_>>().join(", ");
301-
let value = format!("{}::{{{}}}", name, variants_str);
299+
let value =
300+
enum_def_to_string(def, generics, item.ident.name, item.span, &item.vis);
302301
Some(Data::DefData(Def {
303302
kind: DefKind::Enum,
304303
id: id_from_def_id(def_id),

0 commit comments

Comments
 (0)