Test invalid define_opaques
attributes
This commit is contained in:
parent
cb4751d4b8
commit
3e4e65ee8b
12 changed files with 121 additions and 11 deletions
|
@ -1683,17 +1683,21 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
let Some(define_opaque) = define_opaque.as_ref() else {
|
||||
return;
|
||||
};
|
||||
let define_opaque = define_opaque
|
||||
.iter()
|
||||
// TODO: error reporting for non-local items being mentioned and tests that go through these code paths
|
||||
.map(|(id, _path)| {
|
||||
self.resolver
|
||||
.get_partial_res(*id)
|
||||
.unwrap()
|
||||
.expect_full_res()
|
||||
.def_id()
|
||||
.expect_local()
|
||||
});
|
||||
let define_opaque = define_opaque.iter().filter_map(|(id, path)| {
|
||||
let res = self.resolver.get_partial_res(*id).unwrap();
|
||||
let Some(did) = res.expect_full_res().opt_def_id() else {
|
||||
self.dcx().span_delayed_bug(path.span, "should have errored in resolve");
|
||||
return None;
|
||||
};
|
||||
let Some(did) = did.as_local() else {
|
||||
self.dcx().span_err(
|
||||
path.span,
|
||||
"only opaque types defined in the local crate can be defined",
|
||||
);
|
||||
return None;
|
||||
};
|
||||
Some(did)
|
||||
});
|
||||
let define_opaque = self.arena.alloc_from_iter(define_opaque);
|
||||
self.define_opaque = Some(define_opaque);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue