Skip to content

Commit 6596743

Browse files
committed
Add SyntaxContext::hygienic_eq.
This combines multiple `HygieneData::with` calls into one, by combining parts of `hygienic_eq` and `adjust_ident`.
1 parent f9209fc commit 6596743

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/librustc/ty/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3089,7 +3089,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
30893089
// comparison fails frequently, and we want to avoid the expensive
30903090
// `modern()` calls required for the span comparison whenever possible.
30913091
use_name.name == def_name.name &&
3092-
self.adjust_ident(use_name, def_parent_def_id).span.ctxt() == def_name.modern().span.ctxt()
3092+
use_name.span.ctxt().hygienic_eq(def_name.span.ctxt(),
3093+
self.expansion_that_defined(def_parent_def_id))
30933094
}
30943095

30953096
fn expansion_that_defined(self, scope: DefId) -> Mark {

src/libsyntax_pos/hygiene.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,14 @@ impl SyntaxContext {
543543
})
544544
}
545545

546+
pub fn hygienic_eq(self, other: SyntaxContext, mark: Mark) -> bool {
547+
HygieneData::with(|data| {
548+
let mut self_modern = data.modern(self);
549+
data.adjust(&mut self_modern, mark);
550+
self_modern == data.modern(other)
551+
})
552+
}
553+
546554
#[inline]
547555
pub fn modern(self) -> SyntaxContext {
548556
HygieneData::with(|data| data.modern(self))

0 commit comments

Comments
 (0)