pub struct Definitions { /* private fields */ }Expand description
The item-level namespaces of a whole program (one or more modules).
defs and DefIds are global; name lookups are module-relative — a
name is resolved in the scope of the module that owns the item currently
being checked (see Definitions::module_of).
Implementations§
Source§impl Definitions
impl Definitions
Sourcepub fn module_of(&self, item_index: usize) -> ModuleId
pub fn module_of(&self, item_index: usize) -> ModuleId
The module that owns the item at item_index in the merged file.
Sourcepub fn module_count(&self) -> usize
pub fn module_count(&self) -> usize
Number of modules in the program.
Sourcepub fn module_name(&self, module: ModuleId) -> &str
pub fn module_name(&self, module: ModuleId) -> &str
The name of a module.
Sourcepub fn resolve_value(&self, module: ModuleId, name: &str) -> Option<Res>
pub fn resolve_value(&self, module: ModuleId, name: &str) -> Option<Res>
Resolve a name in value position, relative to module.
Sourcepub fn resolve_type(&self, module: ModuleId, name: &str) -> Option<DefId>
pub fn resolve_type(&self, module: ModuleId, name: &str) -> Option<DefId>
Resolve a name in type position, relative to module.
Sourcepub fn resolve_trait(&self, module: ModuleId, name: &str) -> Option<DefId>
pub fn resolve_trait(&self, module: ModuleId, name: &str) -> Option<DefId>
Resolve a name in trait position, relative to module.
Sourcepub fn methods(
&self,
) -> impl Iterator<Item = (DefId, usize, usize, MethodOwner)> + '_
pub fn methods( &self, ) -> impl Iterator<Item = (DefId, usize, usize, MethodOwner)> + '_
Iterate all method definitions as (DefId, item_index, method_index, owner).
Source§impl Definitions
impl Definitions
Sourcepub fn names_in_scope(&self, module: ModuleId) -> Vec<(String, ScopeEntry)>
pub fn names_in_scope(&self, module: ModuleId) -> Vec<(String, ScopeEntry)>
Every name module can see, in all three namespaces:
- its own items;
- its imports;
- the builtins;
- std’s glob-imported names.
A module binds each name once per namespace, so a std name the module shadows appears once, as the module’s own. The result is sorted by name, then values, types and traits, for a stable order.
Source§impl Definitions
impl Definitions
Sourcepub fn importable(&self, module: ModuleId) -> &[(String, ModuleId)]
pub fn importable(&self, module: ModuleId) -> &[(String, ModuleId)]
The modules module could import, by the name an import writes
(spec 3.4b §4.6).
Sourcepub fn exported(&self, module: ModuleId, name: &str) -> Exported
pub fn exported(&self, module: ModuleId, name: &str) -> Exported
What module exports under name.
Sourcepub fn same_package(&self, a: ModuleId, b: ModuleId) -> bool
pub fn same_package(&self, a: ModuleId, b: ModuleId) -> bool
Whether a and b are modules of one package. A loose program’s
modules are.
Sourcepub fn bound_outside_std(&self, module: ModuleId, name: &str) -> Exported
pub fn bound_outside_std(&self, module: ModuleId, name: &str) -> Exported
What module binds name to, in each namespace, other than through
std’s glob (plan decision 8): a binding equal to some std module’s
export of that name came through it. Builtins are bound outside std.
Sourcepub fn is_std_module(&self, module: ModuleId) -> bool
pub fn is_std_module(&self, module: ModuleId) -> bool
Whether module is one of the implicit std modules.