Rollup merge of #108533 - notriddle:notriddle/resolver-def-descr, r=compiler-errors
diagnostics: avoid querying `associated_item` in the resolver Fixes #108529 CC #108324
This commit is contained in:
commit
a184150247
3 changed files with 23 additions and 2 deletions
|
@ -189,7 +189,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
let container = match parent.kind {
|
let container = match parent.kind {
|
||||||
ModuleKind::Def(kind, _, _) => self.tcx.def_kind_descr(kind, parent.def_id()),
|
// Avoid using TyCtxt::def_kind_descr in the resolver, because it
|
||||||
|
// indirectly *calls* the resolver, and would cause a query cycle.
|
||||||
|
ModuleKind::Def(kind, _, _) => kind.descr(parent.def_id()),
|
||||||
ModuleKind::Block => "block",
|
ModuleKind::Block => "block",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1804,7 +1806,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
found("module")
|
found("module")
|
||||||
} else {
|
} else {
|
||||||
match binding.res() {
|
match binding.res() {
|
||||||
Res::Def(kind, id) => found(self.tcx.def_kind_descr(kind, id)),
|
// Avoid using TyCtxt::def_kind_descr in the resolver, because it
|
||||||
|
// indirectly *calls* the resolver, and would cause a query cycle.
|
||||||
|
Res::Def(kind, id) => found(kind.descr(id)),
|
||||||
_ => found(ns_to_try.descr()),
|
_ => found(ns_to_try.descr()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
8
tests/ui/resolve/issue-108529.rs
Normal file
8
tests/ui/resolve/issue-108529.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#![allow(nonstandard_style)]
|
||||||
|
use f::f::f; //~ ERROR
|
||||||
|
|
||||||
|
trait f {
|
||||||
|
extern "C" fn f();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
9
tests/ui/resolve/issue-108529.stderr
Normal file
9
tests/ui/resolve/issue-108529.stderr
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
error[E0432]: unresolved import `f::f`
|
||||||
|
--> $DIR/issue-108529.rs:2:8
|
||||||
|
|
|
||||||
|
LL | use f::f::f;
|
||||||
|
| ^ expected type, found associated function `f` in `f`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0432`.
|
Loading…
Add table
Add a link
Reference in a new issue