mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Rollup merge of #121379 - nnethercote:rm-unchecked_error_guaranteed, r=oli-obk
Remove an `unchecked_error_guaranteed` call. If we abort immediately after complaining about the obsolete `impl Trait for ..` syntax, then we avoid reaching HIR lowering. This means we can use `TyKind::Dummy` instead of `TyKind::Err`. r? `@oli-obk`
This commit is contained in:
commit
ae01e99831
@ -881,9 +881,10 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
|
||||
&item.vis,
|
||||
errors::VisibilityNotPermittedNote::TraitImpl,
|
||||
);
|
||||
// njn: use Dummy here
|
||||
if let TyKind::Err(_) = self_ty.kind {
|
||||
this.dcx().emit_err(errors::ObsoleteAuto { span: item.span });
|
||||
if let TyKind::Dummy = self_ty.kind {
|
||||
// Abort immediately otherwise the `TyKind::Dummy` will reach HIR lowering,
|
||||
// which isn't allowed. Not a problem for this obscure, obsolete syntax.
|
||||
this.dcx().emit_fatal(errors::ObsoleteAuto { span: item.span });
|
||||
}
|
||||
if let (&Unsafe::Yes(span), &ImplPolarity::Negative(sp)) = (unsafety, polarity)
|
||||
{
|
||||
|
@ -601,22 +601,10 @@ impl<'a> Parser<'a> {
|
||||
// We need to report this error after `cfg` expansion for compatibility reasons
|
||||
self.bump(); // `..`, do not add it to expected tokens
|
||||
|
||||
// FIXME(nnethercote): AST validation later detects this
|
||||
// `TyKind::Err` and emits an errors. So why the unchecked
|
||||
// ErrorGuaranteed?
|
||||
// - A `span_delayed_bug` doesn't work here, because rustfmt can
|
||||
// hit this path but then not hit the follow-up path in the AST
|
||||
// validator that issues the error, which results in ICEs.
|
||||
// - `TyKind::Dummy` doesn't work, because it ends up reaching HIR
|
||||
// lowering, which results in ICEs. Changing `TyKind::Dummy` to
|
||||
// `TyKind::Err` during AST validation might fix that, but that's
|
||||
// not possible because AST validation doesn't allow mutability.
|
||||
//
|
||||
// #121072 will hopefully remove all this special handling of the
|
||||
// obsolete `impl Trait for ..` and then this can go away.
|
||||
#[allow(deprecated)]
|
||||
let guar = rustc_errors::ErrorGuaranteed::unchecked_error_guaranteed();
|
||||
Some(self.mk_ty(self.prev_token.span, TyKind::Err(guar)))
|
||||
// AST validation later detects this `TyKind::Dummy` and emits an
|
||||
// error. (#121072 will hopefully remove all this special handling
|
||||
// of the obsolete `impl Trait for ..` and then this can go away.)
|
||||
Some(self.mk_ty(self.prev_token.span, TyKind::Dummy))
|
||||
} else if has_for || self.token.can_begin_type() {
|
||||
Some(self.parse_ty()?)
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user