2021-12-20 21:24:43 -06:00
|
|
|
use crate::ty;
|
|
|
|
|
|
|
|
use rustc_hir::def::Res;
|
|
|
|
use rustc_macros::HashStable;
|
|
|
|
use rustc_span::symbol::Ident;
|
|
|
|
use rustc_span::Span;
|
|
|
|
|
|
|
|
/// This structure is supposed to keep enough data to re-create `NameBinding`s for other crates
|
|
|
|
/// during name resolution. Right now the bindings are not recreated entirely precisely so we may
|
|
|
|
/// need to add more data in the future to correctly support macros 2.0, for example.
|
|
|
|
/// Module child can be either a proper item or a reexport (including private imports).
|
|
|
|
/// In case of reexport all the fields describe the reexport item itself, not what it refers to.
|
|
|
|
#[derive(Copy, Clone, Debug, TyEncodable, TyDecodable, HashStable)]
|
|
|
|
pub struct ModChild {
|
|
|
|
/// Name of the item.
|
|
|
|
pub ident: Ident,
|
|
|
|
/// Resolution result corresponding to the item.
|
|
|
|
/// Local variables cannot be exported, so this `Res` doesn't need the ID parameter.
|
|
|
|
pub res: Res<!>,
|
|
|
|
/// Visibility of the item.
|
|
|
|
pub vis: ty::Visibility,
|
|
|
|
/// Span of the item.
|
|
|
|
pub span: Span,
|
2022-01-24 01:41:25 -06:00
|
|
|
/// A proper `macro_rules` item (not a reexport).
|
|
|
|
pub macro_rules: bool,
|
2021-12-20 21:24:43 -06:00
|
|
|
}
|