Rollup merge of #134140 - compiler-errors:unsafe-binders-ast, r=oli-obk
Add AST support for unsafe binders I'm splitting up #130514 into pieces. It's impossible for me to keep up with a huge PR like that. I'll land type system support for this next, probably w/o MIR lowering, which will come later. r? `@oli-obk` cc `@BoxyUwU` and `@lcnr` who also may want to look at this, though this PR doesn't do too much yet
This commit is contained in:
commit
5c9b227a3d
53 changed files with 616 additions and 18 deletions
|
@ -887,6 +887,28 @@ impl<'ra: 'ast, 'ast, 'tcx> Visitor<'ast> for LateResolutionVisitor<'_, 'ast, 'r
|
|||
},
|
||||
)
|
||||
}
|
||||
TyKind::UnsafeBinder(unsafe_binder) => {
|
||||
// FIXME(unsafe_binder): Better span
|
||||
let span = ty.span;
|
||||
self.with_generic_param_rib(
|
||||
&unsafe_binder.generic_params,
|
||||
RibKind::Normal,
|
||||
LifetimeRibKind::Generics {
|
||||
binder: ty.id,
|
||||
kind: LifetimeBinderKind::BareFnType,
|
||||
span,
|
||||
},
|
||||
|this| {
|
||||
this.visit_generic_params(&unsafe_binder.generic_params, false);
|
||||
this.with_lifetime_rib(
|
||||
// We don't allow anonymous `unsafe &'_ ()` binders,
|
||||
// although I guess we could.
|
||||
LifetimeRibKind::AnonymousReportError,
|
||||
|this| this.visit_ty(&unsafe_binder.inner_ty),
|
||||
);
|
||||
},
|
||||
)
|
||||
}
|
||||
TyKind::Array(element_ty, length) => {
|
||||
self.visit_ty(element_ty);
|
||||
self.resolve_anon_const(length, AnonConstKind::ConstArg(IsRepeatExpr::No));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue