From 85e8d94e05959e3ad57738351ce56f95f15a26a6 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Thu, 30 Jun 2022 10:22:41 +1000 Subject: [PATCH] Change `Ty::Tuple` to `Ty::Unit`. Because that's all that is needed in practice. --- .../rustc_builtin_macros/src/deriving/cmp/eq.rs | 2 +- .../src/deriving/encodable.rs | 2 +- .../src/deriving/generic/ty.rs | 16 +++++----------- .../rustc_builtin_macros/src/deriving/hash.rs | 2 +- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/compiler/rustc_builtin_macros/src/deriving/cmp/eq.rs b/compiler/rustc_builtin_macros/src/deriving/cmp/eq.rs index caf4d3a5f77..cb2ad283a19 100644 --- a/compiler/rustc_builtin_macros/src/deriving/cmp/eq.rs +++ b/compiler/rustc_builtin_macros/src/deriving/cmp/eq.rs @@ -33,7 +33,7 @@ pub fn expand_deriving_eq( generics: Bounds::empty(), explicit_self: true, args: vec![], - ret_ty: nil_ty(), + ret_ty: Unit, attributes: attrs, unify_fieldless_variants: true, combine_substructure: combine_substructure(Box::new(|a, b, c| { diff --git a/compiler/rustc_builtin_macros/src/deriving/encodable.rs b/compiler/rustc_builtin_macros/src/deriving/encodable.rs index 7cce1a0c2a2..7dc0584618d 100644 --- a/compiler/rustc_builtin_macros/src/deriving/encodable.rs +++ b/compiler/rustc_builtin_macros/src/deriving/encodable.rs @@ -125,7 +125,7 @@ pub fn expand_deriving_rustc_encodable( ret_ty: Path(Path::new_( pathvec_std!(result::Result), vec![ - Box::new(Tuple(Vec::new())), + Box::new(Unit), Box::new(Path(Path::new_(vec![typaram, sym::Error], vec![], PathKind::Local))), ], PathKind::Std, diff --git a/compiler/rustc_builtin_macros/src/deriving/generic/ty.rs b/compiler/rustc_builtin_macros/src/deriving/generic/ty.rs index c2dcff36c39..4b20d87629d 100644 --- a/compiler/rustc_builtin_macros/src/deriving/generic/ty.rs +++ b/compiler/rustc_builtin_macros/src/deriving/generic/ty.rs @@ -78,18 +78,14 @@ pub enum Ty { /// `mod::mod::Type<[lifetime], [Params...]>`, including a plain type /// parameter, and things like `i32` Path(Path), - /// includes unit - Tuple(Vec), + /// For () return types. + Unit, } pub fn self_ref() -> Ty { Ref(Box::new(Self_), ast::Mutability::Not) } -pub fn nil_ty() -> Ty { - Tuple(Vec::new()) -} - impl Ty { pub fn to_ty( &self, @@ -105,10 +101,8 @@ impl Ty { } Path(p) => p.to_ty(cx, span, self_ty, self_generics), Self_ => cx.ty_path(self.to_path(cx, span, self_ty, self_generics)), - Tuple(fields) => { - let ty = ast::TyKind::Tup( - fields.iter().map(|f| f.to_ty(cx, span, self_ty, self_generics)).collect(), - ); + Unit => { + let ty = ast::TyKind::Tup(vec![]); cx.ty(span, ty) } } @@ -143,7 +137,7 @@ impl Ty { } Path(ref p) => p.to_path(cx, span, self_ty, generics), Ref(..) => cx.span_bug(span, "ref in a path in generic `derive`"), - Tuple(..) => cx.span_bug(span, "tuple in a path in generic `derive`"), + Unit => cx.span_bug(span, "unit in a path in generic `derive`"), } } } diff --git a/compiler/rustc_builtin_macros/src/deriving/hash.rs b/compiler/rustc_builtin_macros/src/deriving/hash.rs index 641744c47ce..9790449c4b3 100644 --- a/compiler/rustc_builtin_macros/src/deriving/hash.rs +++ b/compiler/rustc_builtin_macros/src/deriving/hash.rs @@ -32,7 +32,7 @@ pub fn expand_deriving_hash( generics: Bounds { bounds: vec![(typaram, vec![path_std!(hash::Hasher)])] }, explicit_self: true, args: vec![(Ref(Box::new(Path(arg)), Mutability::Mut), sym::state)], - ret_ty: nil_ty(), + ret_ty: Unit, attributes: vec![], unify_fieldless_variants: true, combine_substructure: combine_substructure(Box::new(|a, b, c| {