Skip to content

Commit ed20157

Browse files
committed
Auto merge of #138740 - nnethercote:ast-ItemKind-idents, r=fmease
Move `ast::Item::ident` into `ast::ItemKind` The follow-up to #138384, which did the same thing for `hir::ItemKind`. r? `@fmease`
2 parents 97ea17b + ec10833 commit ed20157

59 files changed

Lines changed: 1214 additions & 1012 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎compiler/rustc_ast/src/ast.rs‎

Lines changed: 79 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3303,9 +3303,6 @@ pub struct Item<K = ItemKind> {
33033303
pubid:NodeId,
33043304
pubspan:Span,
33053305
pubvis:Visibility,
3306-
/// The name of the item.
3307-
/// It might be a dummy name in case of anonymous items.
3308-
pubident:Ident,
33093306

33103307
pubkind:K,
33113308

@@ -3327,23 +3324,23 @@ impl Item {
33273324

33283325
pubfnopt_generics(&self) -> Option<&Generics>{
33293326
match&self.kind{
3330-
ItemKind::ExternCrate(_)
3327+
ItemKind::ExternCrate(..)
33313328
| ItemKind::Use(_)
3332-
| ItemKind::Mod(_, _)
3329+
| ItemKind::Mod(..)
33333330
| ItemKind::ForeignMod(_)
33343331
| ItemKind::GlobalAsm(_)
33353332
| ItemKind::MacCall(_)
33363333
| ItemKind::Delegation(_)
33373334
| ItemKind::DelegationMac(_)
3338-
| ItemKind::MacroDef(_) => None,
3335+
| ItemKind::MacroDef(..) => None,
33393336
ItemKind::Static(_) => None,
33403337
ItemKind::Const(i) => Some(&i.generics),
33413338
ItemKind::Fn(i) => Some(&i.generics),
33423339
ItemKind::TyAlias(i) => Some(&i.generics),
3343-
ItemKind::TraitAlias(generics, _)
3344-
| ItemKind::Enum(_, generics)
3345-
| ItemKind::Struct(_, generics)
3346-
| ItemKind::Union(_, generics) => Some(&generics),
3340+
ItemKind::TraitAlias(_,generics, _)
3341+
| ItemKind::Enum(_,_,generics)
3342+
| ItemKind::Struct(_,_,generics)
3343+
| ItemKind::Union(_,_,generics) => Some(&generics),
33473344
ItemKind::Trait(i) => Some(&i.generics),
33483345
ItemKind::Impl(i) => Some(&i.generics),
33493346
}
@@ -3420,6 +3417,7 @@ impl Default for FnHeader {
34203417
pubstructTrait{
34213418
pubsafety:Safety,
34223419
pubis_auto:IsAuto,
3420+
pubident:Ident,
34233421
pubgenerics:Generics,
34243422
pubbounds:GenericBounds,
34253423
pubitems:ThinVec<P<AssocItem>>,
@@ -3465,6 +3463,7 @@ pub struct TyAliasWhereClauses {
34653463
#[derive(Clone,Encodable,Decodable,Debug)]
34663464
pubstructTyAlias{
34673465
pubdefaultness:Defaultness,
3466+
pubident:Ident,
34683467
pubgenerics:Generics,
34693468
pubwhere_clauses:TyAliasWhereClauses,
34703469
pubbounds:GenericBounds,
@@ -3493,6 +3492,7 @@ pub struct FnContract {
34933492
#[derive(Clone,Encodable,Decodable,Debug)]
34943493
pubstructFn{
34953494
pubdefaultness:Defaultness,
3495+
pubident:Ident,
34963496
pubgenerics:Generics,
34973497
pubsig:FnSig,
34983498
pubcontract:Option<P<FnContract>>,
@@ -3506,6 +3506,7 @@ pub struct Delegation {
35063506
pubid:NodeId,
35073507
pubqself:Option<P<QSelf>>,
35083508
pubpath:Path,
3509+
pubident:Ident,
35093510
pubrename:Option<Ident>,
35103511
pubbody:Option<P<Block>>,
35113512
/// The item was expanded from a glob delegation item.
@@ -3523,6 +3524,7 @@ pub struct DelegationMac {
35233524

35243525
#[derive(Clone,Encodable,Decodable,Debug)]
35253526
pubstructStaticItem{
3527+
pubident:Ident,
35263528
pubty:P<Ty>,
35273529
pubsafety:Safety,
35283530
pubmutability:Mutability,
@@ -3533,6 +3535,7 @@ pub struct StaticItem {
35333535
#[derive(Clone,Encodable,Decodable,Debug)]
35343536
pubstructConstItem{
35353537
pubdefaultness:Defaultness,
3538+
pubident:Ident,
35363539
pubgenerics:Generics,
35373540
pubty:P<Ty>,
35383541
pubexpr:Option<P<Expr>>,
@@ -3545,7 +3548,7 @@ pub enum ItemKind {
35453548
/// An `extern crate` item, with the optional *original* crate name if the crate was renamed.
35463549
///
35473550
/// E.g., `extern crate foo` or `extern crate foo_bar as foo`.
3548-
ExternCrate(Option<Symbol>),
3551+
ExternCrate(Option<Symbol>,Ident),
35493552
/// A use declaration item (`use`).
35503553
///
35513554
/// E.g., `use foo;`, `use foo::bar;` or `use foo::bar as FooBar;`.
@@ -3567,7 +3570,7 @@ pub enum ItemKind {
35673570
/// E.g., `mod foo;` or `mod foo { .. }`.
35683571
/// `unsafe` keyword on modules is accepted syntactically for macro DSLs, but not
35693572
/// semantically by Rust.
3570-
Mod(Safety,ModKind),
3573+
Mod(Safety,Ident,ModKind),
35713574
/// An external module (`extern`).
35723575
///
35733576
/// E.g., `extern {}` or `extern "C" {}`.
@@ -3581,23 +3584,23 @@ pub enum ItemKind {
35813584
/// An enum definition (`enum`).
35823585
///
35833586
/// E.g., `enum Foo<A, B> { C<A>, D<B> }`.
3584-
Enum(EnumDef,Generics),
3587+
Enum(Ident,EnumDef,Generics),
35853588
/// A struct definition (`struct`).
35863589
///
35873590
/// E.g., `struct Foo<A> { x: A }`.
3588-
Struct(VariantData,Generics),
3591+
Struct(Ident,VariantData,Generics),
35893592
/// A union definition (`union`).
35903593
///
35913594
/// E.g., `union Foo<A, B> { x: A, y: B }`.
3592-
Union(VariantData,Generics),
3595+
Union(Ident,VariantData,Generics),
35933596
/// A trait declaration (`trait`).
35943597
///
35953598
/// E.g., `trait Foo { .. }`, `trait Foo<T> { .. }` or `auto trait Foo {}`.
35963599
Trait(Box<Trait>),
35973600
/// Trait alias.
35983601
///
35993602
/// E.g., `trait Foo = Bar + Quux;`.
3600-
TraitAlias(Generics,GenericBounds),
3603+
TraitAlias(Ident,Generics,GenericBounds),
36013604
/// An implementation.
36023605
///
36033606
/// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
@@ -3608,7 +3611,7 @@ pub enum ItemKind {
36083611
MacCall(P<MacCall>),
36093612

36103613
/// A macro definition.
3611-
MacroDef(MacroDef),
3614+
MacroDef(Ident,MacroDef),
36123615

36133616
/// A single delegation item (`reuse`).
36143617
///
@@ -3620,6 +3623,31 @@ pub enum ItemKind {
36203623
}
36213624

36223625
implItemKind{
3626+
pubfnident(&self) -> Option<Ident>{
3627+
match*self{
3628+
ItemKind::ExternCrate(_, ident)
3629+
| ItemKind::Static(box StaticItem{ ident, .. })
3630+
| ItemKind::Const(box ConstItem{ ident, .. })
3631+
| ItemKind::Fn(boxFn{ ident, .. })
3632+
| ItemKind::Mod(_, ident, _)
3633+
| ItemKind::TyAlias(box TyAlias{ ident, .. })
3634+
| ItemKind::Enum(ident, ..)
3635+
| ItemKind::Struct(ident, ..)
3636+
| ItemKind::Union(ident, ..)
3637+
| ItemKind::Trait(box Trait{ ident, .. })
3638+
| ItemKind::TraitAlias(ident, ..)
3639+
| ItemKind::MacroDef(ident, _)
3640+
| ItemKind::Delegation(box Delegation{ ident, .. }) => Some(ident),
3641+
3642+
ItemKind::Use(_)
3643+
| ItemKind::ForeignMod(_)
3644+
| ItemKind::GlobalAsm(_)
3645+
| ItemKind::Impl(_)
3646+
| ItemKind::MacCall(_)
3647+
| ItemKind::DelegationMac(_) => None,
3648+
}
3649+
}
3650+
36233651
/// "a" or "an"
36243652
pubfnarticle(&self) -> &'staticstr{
36253653
useItemKind::*;
@@ -3660,11 +3688,11 @@ impl ItemKind {
36603688
Self::Fn(boxFn{ generics, .. })
36613689
| Self::TyAlias(box TyAlias{ generics, .. })
36623690
| Self::Const(box ConstItem{ generics, .. })
3663-
| Self::Enum(_, generics)
3664-
| Self::Struct(_, generics)
3665-
| Self::Union(_, generics)
3691+
| Self::Enum(_,_,generics)
3692+
| Self::Struct(_,_,generics)
3693+
| Self::Union(_,_,generics)
36663694
| Self::Trait(box Trait{ generics, .. })
3667-
| Self::TraitAlias(generics, _)
3695+
| Self::TraitAlias(_,generics, _)
36683696
| Self::Impl(box Impl{ generics, .. }) => Some(generics),
36693697
_ => None,
36703698
}
@@ -3700,6 +3728,17 @@ pub enum AssocItemKind {
37003728
}
37013729

37023730
implAssocItemKind{
3731+
pubfnident(&self) -> Option<Ident>{
3732+
match*self{
3733+
AssocItemKind::Const(box ConstItem{ ident, .. })
3734+
| AssocItemKind::Fn(boxFn{ ident, .. })
3735+
| AssocItemKind::Type(box TyAlias{ ident, .. })
3736+
| AssocItemKind::Delegation(box Delegation{ ident, .. }) => Some(ident),
3737+
3738+
AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
3739+
}
3740+
}
3741+
37033742
pubfndefaultness(&self) -> Defaultness{
37043743
match*self{
37053744
Self::Const(box ConstItem{ defaultness, .. })
@@ -3746,14 +3785,26 @@ impl TryFrom<ItemKind> for AssocItemKind {
37463785
pubenumForeignItemKind{
37473786
/// A foreign static item (`static FOO: u8`).
37483787
Static(Box<StaticItem>),
3749-
/// An foreign function.
3788+
/// A foreign function.
37503789
Fn(Box<Fn>),
3751-
/// An foreign type.
3790+
/// A foreign type.
37523791
TyAlias(Box<TyAlias>),
37533792
/// A macro expanding to foreign items.
37543793
MacCall(P<MacCall>),
37553794
}
37563795

3796+
implForeignItemKind{
3797+
pubfnident(&self) -> Option<Ident>{
3798+
match*self{
3799+
ForeignItemKind::Static(box StaticItem{ ident, .. })
3800+
| ForeignItemKind::Fn(boxFn{ ident, .. })
3801+
| ForeignItemKind::TyAlias(box TyAlias{ ident, .. }) => Some(ident),
3802+
3803+
ForeignItemKind::MacCall(_) => None,
3804+
}
3805+
}
3806+
}
3807+
37573808
implFrom<ForeignItemKind>forItemKind{
37583809
fnfrom(foreign_item_kind:ForeignItemKind) -> ItemKind{
37593810
match foreign_item_kind {
@@ -3790,21 +3841,21 @@ mod size_asserts {
37903841

37913842
usesuper::*;
37923843
// tidy-alphabetical-start
3793-
static_assert_size!(AssocItem,88);
3844+
static_assert_size!(AssocItem,80);
37943845
static_assert_size!(AssocItemKind,16);
37953846
static_assert_size!(Attribute,32);
37963847
static_assert_size!(Block,32);
37973848
static_assert_size!(Expr,72);
37983849
static_assert_size!(ExprKind,40);
3799-
static_assert_size!(Fn,176);
3800-
static_assert_size!(ForeignItem,88);
3850+
static_assert_size!(Fn,184);
3851+
static_assert_size!(ForeignItem,80);
38013852
static_assert_size!(ForeignItemKind,16);
38023853
static_assert_size!(GenericArg,24);
38033854
static_assert_size!(GenericBound,88);
38043855
static_assert_size!(Generics,40);
38053856
static_assert_size!(Impl,136);
3806-
static_assert_size!(Item,136);
3807-
static_assert_size!(ItemKind,64);
3857+
static_assert_size!(Item,144);
3858+
static_assert_size!(ItemKind,80);
38083859
static_assert_size!(LitKind,24);
38093860
static_assert_size!(Local,80);
38103861
static_assert_size!(MetaItemLit,40);

0 commit comments

Comments
 (0)