Catch a bad placeholder type error for statics in extern
s
This commit is contained in:
parent
a5029ac0ab
commit
b5782bad74
3 changed files with 24 additions and 2 deletions
|
@ -735,8 +735,14 @@ fn convert_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
||||||
tcx.ensure().generics_of(item.def_id);
|
tcx.ensure().generics_of(item.def_id);
|
||||||
tcx.ensure().type_of(item.def_id);
|
tcx.ensure().type_of(item.def_id);
|
||||||
tcx.ensure().predicates_of(item.def_id);
|
tcx.ensure().predicates_of(item.def_id);
|
||||||
if let hir::ForeignItemKind::Fn(..) = item.kind {
|
match item.kind {
|
||||||
tcx.ensure().fn_sig(item.def_id);
|
hir::ForeignItemKind::Fn(..) => tcx.ensure().fn_sig(item.def_id),
|
||||||
|
hir::ForeignItemKind::Static(..) => {
|
||||||
|
let mut visitor = PlaceholderHirTyCollector::default();
|
||||||
|
visitor.visit_foreign_item(item);
|
||||||
|
placeholder_type_error(tcx, None, &[], visitor.0, false, None);
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// Regression test for #83621.
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
static x: _; //~ ERROR: [E0121]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
|
@ -0,0 +1,9 @@
|
||||||
|
error[E0121]: the type placeholder `_` is not allowed within types on item signatures
|
||||||
|
--> $DIR/issue-83621-placeholder-static-in-extern.rs:4:15
|
||||||
|
|
|
||||||
|
LL | static x: _;
|
||||||
|
| ^ not allowed in type signatures
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0121`.
|
Loading…
Add table
Add a link
Reference in a new issue