Skip to content

Commit 960f748

Browse files
committed
Auto merge of rust-lang#138740 - nnethercote:ast-ItemKind-idents, r=<try>
Move `ast::Item::ident` into `ast::ItemKind` r? `@ghost`
2 parents 4e2b096 + 87677af commit 960f748

Some content is hidden

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

59 files changed

+1184
-984
lines changed

compiler/rustc_ast/src/ast.rs

+79-28
Original file line numberDiff line numberDiff line change
@@ -3273,9 +3273,6 @@ pub struct Item<K = ItemKind> {
32733273
pub id: NodeId,
32743274
pub span: Span,
32753275
pub vis: Visibility,
3276-
/// The name of the item.
3277-
/// It might be a dummy name in case of anonymous items.
3278-
pub ident: Ident,
32793276

32803277
pub kind: K,
32813278

@@ -3297,23 +3294,23 @@ impl Item {
32973294

32983295
pub fn opt_generics(&self) -> Option<&Generics> {
32993296
match &self.kind {
3300-
ItemKind::ExternCrate(_)
3297+
ItemKind::ExternCrate(..)
33013298
| ItemKind::Use(_)
3302-
| ItemKind::Mod(_, _)
3299+
| ItemKind::Mod(..)
33033300
| ItemKind::ForeignMod(_)
33043301
| ItemKind::GlobalAsm(_)
33053302
| ItemKind::MacCall(_)
33063303
| ItemKind::Delegation(_)
33073304
| ItemKind::DelegationMac(_)
3308-
| ItemKind::MacroDef(_) => None,
3305+
| ItemKind::MacroDef(..) => None,
33093306
ItemKind::Static(_) => None,
33103307
ItemKind::Const(i) => Some(&i.generics),
33113308
ItemKind::Fn(i) => Some(&i.generics),
33123309
ItemKind::TyAlias(i) => Some(&i.generics),
3313-
ItemKind::TraitAlias(generics, _)
3314-
| ItemKind::Enum(_, generics)
3315-
| ItemKind::Struct(_, generics)
3316-
| ItemKind::Union(_, generics) => Some(&generics),
3310+
ItemKind::TraitAlias(_, generics, _)
3311+
| ItemKind::Enum(_, _, generics)
3312+
| ItemKind::Struct(_, _, generics)
3313+
| ItemKind::Union(_, _, generics) => Some(&generics),
33173314
ItemKind::Trait(i) => Some(&i.generics),
33183315
ItemKind::Impl(i) => Some(&i.generics),
33193316
}
@@ -3390,6 +3387,7 @@ impl Default for FnHeader {
33903387
pub struct Trait {
33913388
pub safety: Safety,
33923389
pub is_auto: IsAuto,
3390+
pub ident: Ident,
33933391
pub generics: Generics,
33943392
pub bounds: GenericBounds,
33953393
pub items: ThinVec<P<AssocItem>>,
@@ -3435,6 +3433,7 @@ pub struct TyAliasWhereClauses {
34353433
#[derive(Clone, Encodable, Decodable, Debug)]
34363434
pub struct TyAlias {
34373435
pub defaultness: Defaultness,
3436+
pub ident: Ident,
34383437
pub generics: Generics,
34393438
pub where_clauses: TyAliasWhereClauses,
34403439
pub bounds: GenericBounds,
@@ -3463,6 +3462,7 @@ pub struct FnContract {
34633462
#[derive(Clone, Encodable, Decodable, Debug)]
34643463
pub struct Fn {
34653464
pub defaultness: Defaultness,
3465+
pub ident: Ident,
34663466
pub generics: Generics,
34673467
pub sig: FnSig,
34683468
pub contract: Option<P<FnContract>>,
@@ -3476,6 +3476,7 @@ pub struct Delegation {
34763476
pub id: NodeId,
34773477
pub qself: Option<P<QSelf>>,
34783478
pub path: Path,
3479+
pub ident: Ident,
34793480
pub rename: Option<Ident>,
34803481
pub body: Option<P<Block>>,
34813482
/// The item was expanded from a glob delegation item.
@@ -3493,6 +3494,7 @@ pub struct DelegationMac {
34933494

34943495
#[derive(Clone, Encodable, Decodable, Debug)]
34953496
pub struct StaticItem {
3497+
pub ident: Ident,
34963498
pub ty: P<Ty>,
34973499
pub safety: Safety,
34983500
pub mutability: Mutability,
@@ -3502,6 +3504,7 @@ pub struct StaticItem {
35023504
#[derive(Clone, Encodable, Decodable, Debug)]
35033505
pub struct ConstItem {
35043506
pub defaultness: Defaultness,
3507+
pub ident: Ident,
35053508
pub generics: Generics,
35063509
pub ty: P<Ty>,
35073510
pub expr: Option<P<Expr>>,
@@ -3513,7 +3516,7 @@ pub enum ItemKind {
35133516
/// An `extern crate` item, with the optional *original* crate name if the crate was renamed.
35143517
///
35153518
/// E.g., `extern crate foo` or `extern crate foo_bar as foo`.
3516-
ExternCrate(Option<Symbol>),
3519+
ExternCrate(Option<Symbol>, Ident),
35173520
/// A use declaration item (`use`).
35183521
///
35193522
/// E.g., `use foo;`, `use foo::bar;` or `use foo::bar as FooBar;`.
@@ -3535,7 +3538,7 @@ pub enum ItemKind {
35353538
/// E.g., `mod foo;` or `mod foo { .. }`.
35363539
/// `unsafe` keyword on modules is accepted syntactically for macro DSLs, but not
35373540
/// semantically by Rust.
3538-
Mod(Safety, ModKind),
3541+
Mod(Safety, Ident, ModKind),
35393542
/// An external module (`extern`).
35403543
///
35413544
/// E.g., `extern {}` or `extern "C" {}`.
@@ -3549,23 +3552,23 @@ pub enum ItemKind {
35493552
/// An enum definition (`enum`).
35503553
///
35513554
/// E.g., `enum Foo<A, B> { C<A>, D<B> }`.
3552-
Enum(EnumDef, Generics),
3555+
Enum(Ident, EnumDef, Generics),
35533556
/// A struct definition (`struct`).
35543557
///
35553558
/// E.g., `struct Foo<A> { x: A }`.
3556-
Struct(VariantData, Generics),
3559+
Struct(Ident, VariantData, Generics),
35573560
/// A union definition (`union`).
35583561
///
35593562
/// E.g., `union Foo<A, B> { x: A, y: B }`.
3560-
Union(VariantData, Generics),
3563+
Union(Ident, VariantData, Generics),
35613564
/// A trait declaration (`trait`).
35623565
///
35633566
/// E.g., `trait Foo { .. }`, `trait Foo<T> { .. }` or `auto trait Foo {}`.
35643567
Trait(Box<Trait>),
35653568
/// Trait alias.
35663569
///
35673570
/// E.g., `trait Foo = Bar + Quux;`.
3568-
TraitAlias(Generics, GenericBounds),
3571+
TraitAlias(Ident, Generics, GenericBounds),
35693572
/// An implementation.
35703573
///
35713574
/// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
@@ -3576,7 +3579,7 @@ pub enum ItemKind {
35763579
MacCall(P<MacCall>),
35773580

35783581
/// A macro definition.
3579-
MacroDef(MacroDef),
3582+
MacroDef(Ident, MacroDef),
35803583

35813584
/// A single delegation item (`reuse`).
35823585
///
@@ -3588,6 +3591,31 @@ pub enum ItemKind {
35883591
}
35893592

35903593
impl ItemKind {
3594+
pub fn ident(&self) -> Option<Ident> {
3595+
match *self {
3596+
ItemKind::ExternCrate(_, ident)
3597+
| ItemKind::Static(box StaticItem { ident, .. })
3598+
| ItemKind::Const(box ConstItem { ident, .. })
3599+
| ItemKind::Fn(box Fn { ident, .. })
3600+
| ItemKind::Mod(_, ident, _)
3601+
| ItemKind::TyAlias(box TyAlias { ident, .. })
3602+
| ItemKind::Enum(ident, ..)
3603+
| ItemKind::Struct(ident, ..)
3604+
| ItemKind::Union(ident, ..)
3605+
| ItemKind::Trait(box Trait { ident, .. })
3606+
| ItemKind::TraitAlias(ident, ..)
3607+
| ItemKind::MacroDef(ident, _)
3608+
| ItemKind::Delegation(box Delegation { ident, .. }) => Some(ident),
3609+
3610+
ItemKind::Use(_)
3611+
| ItemKind::ForeignMod(_)
3612+
| ItemKind::GlobalAsm(_)
3613+
| ItemKind::Impl(_)
3614+
| ItemKind::MacCall(_)
3615+
| ItemKind::DelegationMac(_) => None,
3616+
}
3617+
}
3618+
35913619
/// "a" or "an"
35923620
pub fn article(&self) -> &'static str {
35933621
use ItemKind::*;
@@ -3628,11 +3656,11 @@ impl ItemKind {
36283656
Self::Fn(box Fn { generics, .. })
36293657
| Self::TyAlias(box TyAlias { generics, .. })
36303658
| Self::Const(box ConstItem { generics, .. })
3631-
| Self::Enum(_, generics)
3632-
| Self::Struct(_, generics)
3633-
| Self::Union(_, generics)
3659+
| Self::Enum(_, _, generics)
3660+
| Self::Struct(_, _, generics)
3661+
| Self::Union(_, _, generics)
36343662
| Self::Trait(box Trait { generics, .. })
3635-
| Self::TraitAlias(generics, _)
3663+
| Self::TraitAlias(_, generics, _)
36363664
| Self::Impl(box Impl { generics, .. }) => Some(generics),
36373665
_ => None,
36383666
}
@@ -3668,6 +3696,17 @@ pub enum AssocItemKind {
36683696
}
36693697

36703698
impl AssocItemKind {
3699+
pub fn ident(&self) -> Option<Ident> {
3700+
match *self {
3701+
AssocItemKind::Const(box ConstItem { ident, .. })
3702+
| AssocItemKind::Fn(box Fn { ident, .. })
3703+
| AssocItemKind::Type(box TyAlias { ident, .. })
3704+
| AssocItemKind::Delegation(box Delegation { ident, .. }) => Some(ident),
3705+
3706+
AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
3707+
}
3708+
}
3709+
36713710
pub fn defaultness(&self) -> Defaultness {
36723711
match *self {
36733712
Self::Const(box ConstItem { defaultness, .. })
@@ -3714,14 +3753,26 @@ impl TryFrom<ItemKind> for AssocItemKind {
37143753
pub enum ForeignItemKind {
37153754
/// A foreign static item (`static FOO: u8`).
37163755
Static(Box<StaticItem>),
3717-
/// An foreign function.
3756+
/// A foreign function.
37183757
Fn(Box<Fn>),
3719-
/// An foreign type.
3758+
/// A foreign type.
37203759
TyAlias(Box<TyAlias>),
37213760
/// A macro expanding to foreign items.
37223761
MacCall(P<MacCall>),
37233762
}
37243763

3764+
impl ForeignItemKind {
3765+
pub fn ident(&self) -> Option<Ident> {
3766+
match *self {
3767+
ForeignItemKind::Static(box StaticItem { ident, .. })
3768+
| ForeignItemKind::Fn(box Fn { ident, .. })
3769+
| ForeignItemKind::TyAlias(box TyAlias { ident, .. }) => Some(ident),
3770+
3771+
ForeignItemKind::MacCall(_) => None,
3772+
}
3773+
}
3774+
}
3775+
37253776
impl From<ForeignItemKind> for ItemKind {
37263777
fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
37273778
match foreign_item_kind {
@@ -3758,21 +3809,21 @@ mod size_asserts {
37583809

37593810
use super::*;
37603811
// tidy-alphabetical-start
3761-
static_assert_size!(AssocItem, 88);
3812+
static_assert_size!(AssocItem, 80);
37623813
static_assert_size!(AssocItemKind, 16);
37633814
static_assert_size!(Attribute, 32);
37643815
static_assert_size!(Block, 32);
37653816
static_assert_size!(Expr, 72);
37663817
static_assert_size!(ExprKind, 40);
3767-
static_assert_size!(Fn, 176);
3768-
static_assert_size!(ForeignItem, 88);
3818+
static_assert_size!(Fn, 184);
3819+
static_assert_size!(ForeignItem, 80);
37693820
static_assert_size!(ForeignItemKind, 16);
37703821
static_assert_size!(GenericArg, 24);
37713822
static_assert_size!(GenericBound, 88);
37723823
static_assert_size!(Generics, 40);
37733824
static_assert_size!(Impl, 136);
3774-
static_assert_size!(Item, 136);
3775-
static_assert_size!(ItemKind, 64);
3825+
static_assert_size!(Item, 144);
3826+
static_assert_size!(ItemKind, 80);
37763827
static_assert_size!(LitKind, 24);
37773828
static_assert_size!(Local, 80);
37783829
static_assert_size!(MetaItemLit, 40);

0 commit comments

Comments
 (0)