These combine two `HygieneData::with` calls into one.
}
pub fn adjust_ident(self, mut ident: Ident, scope: DefId) -> Ident {
- ident = ident.modern();
- ident.span.adjust(self.expansion_that_defined(scope));
+ ident.span.modernize_and_adjust(self.expansion_that_defined(scope));
ident
}
pub fn adjust_ident_and_get_scope(self, mut ident: Ident, scope: DefId, block: hir::HirId)
-> (Ident, DefId) {
- ident = ident.modern();
- let scope = match ident.span.adjust(self.expansion_that_defined(scope)) {
+ let scope = match ident.span.modernize_and_adjust(self.expansion_that_defined(scope)) {
Some(actual_expansion) =>
self.hir().definitions().parent_module_of_macro_def(actual_expansion),
None => self.hir().get_module_parent_by_hir_id(block),
let orig_current_module = self.current_module;
match module {
ModuleOrUniformRoot::Module(module) => {
- ident.span = ident.span.modern();
- if let Some(def) = ident.span.adjust(module.expansion) {
+ if let Some(def) = ident.span.modernize_and_adjust(module.expansion) {
self.current_module = self.macro_def_scope(def);
}
}
ModuleOrUniformRoot::ExternPrelude => {
- ident.span = ident.span.modern();
- ident.span.adjust(Mark::root());
+ ident.span.modernize_and_adjust(Mark::root());
}
ModuleOrUniformRoot::CrateRootAndExternPrelude |
ModuleOrUniformRoot::CurrentScope => {
HygieneData::with(|data| data.adjust(self, expansion))
}
+ /// Like `SyntaxContext::adjust`, but also modernizes `self`.
+ pub fn modernize_and_adjust(&mut self, expansion: Mark) -> Option<Mark> {
+ HygieneData::with(|data| {
+ *self = data.modern(*self);
+ data.adjust(self, expansion)
+ })
+ }
+
/// Adjust this context for resolution in a scope created by the given expansion
/// via a glob import with the given `SyntaxContext`.
/// For example:
mark
}
+ #[inline]
+ pub fn modernize_and_adjust(&mut self, expansion: Mark) -> Option<Mark> {
+ let mut span = self.data();
+ let mark = span.ctxt.modernize_and_adjust(expansion);
+ *self = Span::new(span.lo, span.hi, span.ctxt);
+ mark
+ }
+
#[inline]
pub fn glob_adjust(&mut self, expansion: Mark, glob_span: Span) -> Option<Option<Mark>> {
let mut span = self.data();