Skip to content

Commit 964c2a8

Browse files
committed
XXX: pass Ident in assoc_item, instead of just the name
1 parent 05ab52e commit 964c2a8

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

compiler/rustc_resolve/src/late.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use rustc_session::lint::{self, BuiltinLintDiag};
3030
use rustc_session::parse::feature_err;
3131
use rustc_span::source_map::{Spanned, respan};
3232
use rustc_span::symbol::{Ident, Symbol, kw, sym};
33-
use rustc_span::{BytePos, Span, SyntaxContext};
33+
use rustc_span::{BytePos, Span};
3434
use smallvec::{SmallVec, smallvec};
3535
use tracing::{debug, instrument, trace};
3636

@@ -4776,8 +4776,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
47764776
self.r.traits_in_scope(
47774777
self.current_trait_ref.as_ref().map(|(module, _)| *module),
47784778
&self.parent_scope,
4779-
ident.span.ctxt(),
4780-
Some((ident.name, ns)),
4779+
Some((ident, ns)),
47814780
)
47824781
}
47834782

@@ -4869,7 +4868,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
48694868
.entry(self.parent_scope.module.nearest_parent_mod().expect_local())
48704869
.or_insert_with(|| {
48714870
self.r
4872-
.traits_in_scope(None, &self.parent_scope, SyntaxContext::root(), None)
4871+
.traits_in_scope(None, &self.parent_scope, None)
48734872
.into_iter()
48744873
.filter_map(|tr| {
48754874
if !tr.def_id.is_local()

compiler/rustc_resolve/src/lib.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,8 +1750,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
17501750
&mut self,
17511751
current_trait: Option<Module<'ra>>,
17521752
parent_scope: &ParentScope<'ra>,
1753-
ctxt: SyntaxContext,
1754-
assoc_item: Option<(Symbol, Namespace)>,
1753+
assoc_item: Option<(Ident, Namespace)>,
17551754
) -> Vec<TraitCandidate> {
17561755
let mut found_traits = Vec::new();
17571756

@@ -1762,6 +1761,11 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
17621761
}
17631762
}
17641763

1764+
let ctxt = if let Some((ident, _)) = assoc_item {
1765+
ident.span.ctxt()
1766+
} else {
1767+
SyntaxContext::root()
1768+
};
17651769
self.visit_scopes(ScopeSet::All(TypeNS), parent_scope, ctxt, |this, scope, _, _| {
17661770
match scope {
17671771
Scope::Module(module, _) => {
@@ -1784,7 +1788,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
17841788
fn traits_in_module(
17851789
&mut self,
17861790
module: Module<'ra>,
1787-
assoc_item: Option<(Symbol, Namespace)>,
1791+
assoc_item: Option<(Ident, Namespace)>,
17881792
found_traits: &mut Vec<TraitCandidate>,
17891793
) {
17901794
module.ensure_traits(self);
@@ -1806,14 +1810,14 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
18061810
fn trait_may_have_item(
18071811
&mut self,
18081812
trait_module: Option<Module<'ra>>,
1809-
assoc_item: Option<(Symbol, Namespace)>,
1813+
assoc_item: Option<(Ident, Namespace)>,
18101814
) -> bool {
18111815
match (trait_module, assoc_item) {
1812-
(Some(trait_module), Some((name, ns))) => self
1816+
(Some(trait_module), Some((ident, ns))) => self
18131817
.resolutions(trait_module)
18141818
.borrow()
18151819
.iter()
1816-
.any(|(key, _name_resolution)| key.ns == ns && key.ident.name == name),
1820+
.any(|(key, _name_resolution)| key.ns == ns && key.ident.name == ident.name),
18171821
_ => true,
18181822
}
18191823
}

0 commit comments

Comments
 (0)