diff options
Diffstat (limited to 'compiler/rustc_middle/src/metadata.rs')
-rw-r--r-- | compiler/rustc_middle/src/metadata.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/metadata.rs b/compiler/rustc_middle/src/metadata.rs new file mode 100644 index 000000000..c8e78747d --- /dev/null +++ b/compiler/rustc_middle/src/metadata.rs @@ -0,0 +1,26 @@ +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, + /// A proper `macro_rules` item (not a reexport). + pub macro_rules: bool, +} |