}
}
-pub type ErrorMessage = Option<(Span, String)>;
-
#[derive(Copy, Clone)]
enum TypeParameters<'a, 'b> {
NoTypeParameters,
expansion: Mark,
}
-pub type Module<'a> = &'a ModuleData<'a>;
+type Module<'a> = &'a ModuleData<'a>;
impl<'a> ModuleData<'a> {
fn new(parent: Option<Module<'a>>,
return def;
}
- // Calls `f` with a `Resolver` whose current lexical scope is `module`'s lexical scope,
- // i.e. the module's items and the prelude (unless the module is `#[no_implicit_prelude]`).
- // FIXME #34673: This needs testing.
- pub fn with_module_lexical_scope<T, F>(&mut self, module: Module<'a>, f: F) -> T
- where F: FnOnce(&mut Resolver<'a>) -> T,
- {
- self.with_empty_ribs(|this| {
- this.ribs[ValueNS].push(Rib::new(ModuleRibKind(module)));
- this.ribs[TypeNS].push(Rib::new(ModuleRibKind(module)));
- f(this)
- })
- }
-
- fn with_empty_ribs<T, F>(&mut self, f: F) -> T
- where F: FnOnce(&mut Resolver<'a>) -> T,
- {
- let ribs = replace(&mut self.ribs, PerNS::<Vec<Rib>>::default());
- let label_ribs = replace(&mut self.label_ribs, Vec::new());
-
- let result = f(self);
- self.ribs = ribs;
- self.label_ribs = label_ribs;
- result
- }
-
fn lookup_assoc_candidate<FilterFn>(&mut self,
ident: Ident,
ns: Namespace,