Remove Session
methods that duplicate DiagCtxt
methods.
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier access.
This commit is contained in:
parent
d51db05d7e
commit
99472c7049
298 changed files with 1806 additions and 2064 deletions
|
@ -92,7 +92,7 @@ pub(super) fn build_custom_mir<'tcx>(
|
|||
pctxt.parse_body(expr)?;
|
||||
};
|
||||
if let Err(err) = res {
|
||||
tcx.sess.dcx().span_fatal(
|
||||
tcx.dcx().span_fatal(
|
||||
err.span,
|
||||
format!("Could not parse {}, found: {:?}", err.expected, err.item_description),
|
||||
)
|
||||
|
|
|
@ -114,7 +114,7 @@ fn lit_to_mir_constant<'tcx>(
|
|||
let width = tcx
|
||||
.layout_of(param_ty)
|
||||
.map_err(|_| {
|
||||
LitToConstError::Reported(tcx.sess.span_delayed_bug(
|
||||
LitToConstError::Reported(tcx.dcx().span_delayed_bug(
|
||||
DUMMY_SP,
|
||||
format!("couldn't compute width of literal: {:?}", lit_input.lit),
|
||||
))
|
||||
|
@ -158,7 +158,7 @@ fn lit_to_mir_constant<'tcx>(
|
|||
}
|
||||
(ast::LitKind::Float(n, _), ty::Float(fty)) => parse_float_into_constval(*n, *fty, neg)
|
||||
.ok_or_else(|| {
|
||||
LitToConstError::Reported(tcx.sess.span_delayed_bug(
|
||||
LitToConstError::Reported(tcx.dcx().span_delayed_bug(
|
||||
DUMMY_SP,
|
||||
format!("couldn't parse float literal: {:?}", lit_input.lit),
|
||||
))
|
||||
|
@ -167,7 +167,7 @@ fn lit_to_mir_constant<'tcx>(
|
|||
(ast::LitKind::Char(c), ty::Char) => ConstValue::Scalar(Scalar::from_char(*c)),
|
||||
(ast::LitKind::Err, _) => {
|
||||
return Err(LitToConstError::Reported(
|
||||
tcx.sess.span_delayed_bug(DUMMY_SP, "encountered LitKind::Err during mir build"),
|
||||
tcx.dcx().span_delayed_bug(DUMMY_SP, "encountered LitKind::Err during mir build"),
|
||||
));
|
||||
}
|
||||
_ => return Err(LitToConstError::TypeError),
|
||||
|
|
|
@ -470,7 +470,7 @@ impl<'a, 'tcx> Visitor<'a, 'tcx> for UnsafetyVisitor<'a, 'tcx> {
|
|||
if let Some((assigned_ty, assignment_span)) = self.assignment_info {
|
||||
if assigned_ty.needs_drop(self.tcx, self.param_env) {
|
||||
// This would be unsafe, but should be outright impossible since we reject such unions.
|
||||
self.tcx.sess.span_delayed_bug(assignment_span, format!("union fields that need dropping should be impossible: {assigned_ty}"));
|
||||
self.tcx.dcx().span_delayed_bug(assignment_span, format!("union fields that need dropping should be impossible: {assigned_ty}"));
|
||||
}
|
||||
} else {
|
||||
self.requires_unsafe(expr.span, AccessToUnionField);
|
||||
|
@ -735,101 +735,93 @@ impl UnsafeOpKind {
|
|||
None
|
||||
};
|
||||
|
||||
let dcx = tcx.dcx();
|
||||
match self {
|
||||
CallToUnsafeFunction(Some(did)) if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(CallToUnsafeFunctionRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(CallToUnsafeFunctionRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
function: &tcx.def_path_str(*did),
|
||||
});
|
||||
}
|
||||
CallToUnsafeFunction(Some(did)) => {
|
||||
tcx.sess.emit_err(CallToUnsafeFunctionRequiresUnsafe {
|
||||
dcx.emit_err(CallToUnsafeFunctionRequiresUnsafe {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
function: &tcx.def_path_str(*did),
|
||||
});
|
||||
}
|
||||
CallToUnsafeFunction(None) if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(
|
||||
CallToUnsafeFunctionRequiresUnsafeNamelessUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
},
|
||||
);
|
||||
dcx.emit_err(CallToUnsafeFunctionRequiresUnsafeNamelessUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
CallToUnsafeFunction(None) => {
|
||||
tcx.sess.emit_err(CallToUnsafeFunctionRequiresUnsafeNameless {
|
||||
dcx.emit_err(CallToUnsafeFunctionRequiresUnsafeNameless {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
UseOfInlineAssembly if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(UseOfInlineAssemblyRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(UseOfInlineAssemblyRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
UseOfInlineAssembly => {
|
||||
tcx.sess.emit_err(UseOfInlineAssemblyRequiresUnsafe {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
dcx.emit_err(UseOfInlineAssemblyRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
}
|
||||
InitializingTypeWith if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(InitializingTypeWithRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(InitializingTypeWithRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
InitializingTypeWith => {
|
||||
tcx.sess.emit_err(InitializingTypeWithRequiresUnsafe {
|
||||
dcx.emit_err(InitializingTypeWithRequiresUnsafe {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
UseOfMutableStatic if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(UseOfMutableStaticRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(UseOfMutableStaticRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
UseOfMutableStatic => {
|
||||
tcx.sess
|
||||
.emit_err(UseOfMutableStaticRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
dcx.emit_err(UseOfMutableStaticRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
}
|
||||
UseOfExternStatic if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(UseOfExternStaticRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(UseOfExternStaticRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
UseOfExternStatic => {
|
||||
tcx.sess
|
||||
.emit_err(UseOfExternStaticRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
dcx.emit_err(UseOfExternStaticRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
}
|
||||
DerefOfRawPointer if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(DerefOfRawPointerRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(DerefOfRawPointerRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
DerefOfRawPointer => {
|
||||
tcx.sess
|
||||
.emit_err(DerefOfRawPointerRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
dcx.emit_err(DerefOfRawPointerRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
}
|
||||
AccessToUnionField if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(AccessToUnionFieldRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(AccessToUnionFieldRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
AccessToUnionField => {
|
||||
tcx.sess
|
||||
.emit_err(AccessToUnionFieldRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
dcx.emit_err(AccessToUnionFieldRequiresUnsafe { span, unsafe_not_inherited_note });
|
||||
}
|
||||
MutationOfLayoutConstrainedField if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(
|
||||
dcx.emit_err(
|
||||
MutationOfLayoutConstrainedFieldRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
|
@ -837,13 +829,13 @@ impl UnsafeOpKind {
|
|||
);
|
||||
}
|
||||
MutationOfLayoutConstrainedField => {
|
||||
tcx.sess.emit_err(MutationOfLayoutConstrainedFieldRequiresUnsafe {
|
||||
dcx.emit_err(MutationOfLayoutConstrainedFieldRequiresUnsafe {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
}
|
||||
BorrowOfLayoutConstrainedField if unsafe_op_in_unsafe_fn_allowed => {
|
||||
tcx.sess.emit_err(
|
||||
dcx.emit_err(
|
||||
BorrowOfLayoutConstrainedFieldRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
|
@ -851,7 +843,7 @@ impl UnsafeOpKind {
|
|||
);
|
||||
}
|
||||
BorrowOfLayoutConstrainedField => {
|
||||
tcx.sess.emit_err(BorrowOfLayoutConstrainedFieldRequiresUnsafe {
|
||||
dcx.emit_err(BorrowOfLayoutConstrainedFieldRequiresUnsafe {
|
||||
span,
|
||||
unsafe_not_inherited_note,
|
||||
});
|
||||
|
@ -859,7 +851,7 @@ impl UnsafeOpKind {
|
|||
CallToFunctionWith { function, missing, build_enabled }
|
||||
if unsafe_op_in_unsafe_fn_allowed =>
|
||||
{
|
||||
tcx.sess.emit_err(CallToFunctionWithRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
dcx.emit_err(CallToFunctionWithRequiresUnsafeUnsafeOpInUnsafeFnAllowed {
|
||||
span,
|
||||
missing_target_features: DiagnosticArgValue::StrListSepByAnd(
|
||||
missing.iter().map(|feature| Cow::from(feature.as_str())).collect(),
|
||||
|
@ -875,7 +867,7 @@ impl UnsafeOpKind {
|
|||
});
|
||||
}
|
||||
CallToFunctionWith { function, missing, build_enabled } => {
|
||||
tcx.sess.emit_err(CallToFunctionWithRequiresUnsafe {
|
||||
dcx.emit_err(CallToFunctionWithRequiresUnsafe {
|
||||
span,
|
||||
missing_target_features: DiagnosticArgValue::StrListSepByAnd(
|
||||
missing.iter().map(|feature| Cow::from(feature.as_str())).collect(),
|
||||
|
|
|
@ -16,7 +16,7 @@ pub(crate) fn lit_to_const<'tcx>(
|
|||
let width = tcx
|
||||
.layout_of(param_ty)
|
||||
.map_err(|_| {
|
||||
LitToConstError::Reported(tcx.sess.span_delayed_bug(
|
||||
LitToConstError::Reported(tcx.dcx().span_delayed_bug(
|
||||
DUMMY_SP,
|
||||
format!("couldn't compute width of literal: {:?}", lit_input.lit),
|
||||
))
|
||||
|
@ -62,7 +62,7 @@ pub(crate) fn lit_to_const<'tcx>(
|
|||
(ast::LitKind::Float(n, _), ty::Float(fty)) => {
|
||||
let bits = parse_float_into_scalar(*n, *fty, neg)
|
||||
.ok_or_else(|| {
|
||||
LitToConstError::Reported(tcx.sess.span_delayed_bug(
|
||||
LitToConstError::Reported(tcx.dcx().span_delayed_bug(
|
||||
DUMMY_SP,
|
||||
format!("couldn't parse float literal: {:?}", lit_input.lit),
|
||||
))
|
||||
|
@ -73,7 +73,7 @@ pub(crate) fn lit_to_const<'tcx>(
|
|||
(ast::LitKind::Char(c), ty::Char) => ty::ValTree::from_scalar_int((*c).into()),
|
||||
(ast::LitKind::Err, _) => {
|
||||
return Err(LitToConstError::Reported(
|
||||
tcx.sess.span_delayed_bug(DUMMY_SP, "encountered LitKind::Err during mir build"),
|
||||
tcx.dcx().span_delayed_bug(DUMMY_SP, "encountered LitKind::Err during mir build"),
|
||||
));
|
||||
}
|
||||
_ => return Err(LitToConstError::TypeError),
|
||||
|
|
|
@ -293,7 +293,7 @@ impl<'tcx> Cx<'tcx> {
|
|||
let attrs = tcx.hir().attrs(expr.hir_id);
|
||||
if attrs.iter().any(|a| a.name_or_empty() == sym::rustc_box) {
|
||||
if attrs.len() != 1 {
|
||||
tcx.sess.emit_err(errors::RustcBoxAttributeError {
|
||||
tcx.dcx().emit_err(errors::RustcBoxAttributeError {
|
||||
span: attrs[0].span,
|
||||
reason: errors::RustcBoxAttrReason::Attributes,
|
||||
});
|
||||
|
@ -312,13 +312,13 @@ impl<'tcx> Cx<'tcx> {
|
|||
kind: ExprKind::Box { value: self.mirror_expr(value) },
|
||||
};
|
||||
} else {
|
||||
tcx.sess.emit_err(errors::RustcBoxAttributeError {
|
||||
tcx.dcx().emit_err(errors::RustcBoxAttributeError {
|
||||
span: expr.span,
|
||||
reason: errors::RustcBoxAttrReason::NotBoxNew,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
tcx.sess.emit_err(errors::RustcBoxAttributeError {
|
||||
tcx.dcx().emit_err(errors::RustcBoxAttributeError {
|
||||
span: attrs[0].span,
|
||||
reason: errors::RustcBoxAttrReason::MissingBox,
|
||||
});
|
||||
|
|
|
@ -55,7 +55,7 @@ pub(crate) fn check_match(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Result<(), Err
|
|||
}
|
||||
|
||||
fn create_e0004(sess: &Session, sp: Span, error_message: String) -> DiagnosticBuilder<'_> {
|
||||
struct_span_err!(sess, sp, E0004, "{}", &error_message)
|
||||
struct_span_err!(sess.dcx(), sp, E0004, "{}", &error_message)
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
|
@ -650,7 +650,7 @@ impl<'thir, 'p, 'tcx> MatchVisitor<'thir, 'p, 'tcx> {
|
|||
false
|
||||
};
|
||||
|
||||
self.error = Err(self.tcx.sess.emit_err(PatternNotCovered {
|
||||
self.error = Err(self.tcx.dcx().emit_err(PatternNotCovered {
|
||||
span: pat.span,
|
||||
origin,
|
||||
uncovered: Uncovered::new(pat.span, &cx, witnesses),
|
||||
|
@ -697,7 +697,7 @@ fn check_borrow_conflicts_in_at_patterns<'tcx>(cx: &MatchVisitor<'_, '_, 'tcx>,
|
|||
BindingMode::ByRef(_) => conflicts_ref.push(span),
|
||||
});
|
||||
if !conflicts_ref.is_empty() {
|
||||
sess.emit_err(BorrowOfMovedValue {
|
||||
sess.dcx().emit_err(BorrowOfMovedValue {
|
||||
binding_span: pat.span,
|
||||
conflicts_ref,
|
||||
name,
|
||||
|
@ -754,20 +754,20 @@ fn check_borrow_conflicts_in_at_patterns<'tcx>(cx: &MatchVisitor<'_, '_, 'tcx>,
|
|||
// Report errors if any.
|
||||
if report_mut_mut {
|
||||
// Report mutability conflicts for e.g. `ref mut x @ Some(ref mut y)`.
|
||||
sess.emit_err(MultipleMutBorrows { span: pat.span, occurrences });
|
||||
sess.dcx().emit_err(MultipleMutBorrows { span: pat.span, occurrences });
|
||||
} else if report_mut_ref {
|
||||
// Report mutability conflicts for e.g. `ref x @ Some(ref mut y)` or the converse.
|
||||
match mut_outer {
|
||||
Mutability::Mut => {
|
||||
sess.emit_err(AlreadyMutBorrowed { span: pat.span, occurrences });
|
||||
sess.dcx().emit_err(AlreadyMutBorrowed { span: pat.span, occurrences });
|
||||
}
|
||||
Mutability::Not => {
|
||||
sess.emit_err(AlreadyBorrowed { span: pat.span, occurrences });
|
||||
sess.dcx().emit_err(AlreadyBorrowed { span: pat.span, occurrences });
|
||||
}
|
||||
};
|
||||
} else if report_move_conflict {
|
||||
// Report by-ref and by-move conflicts, e.g. `ref x @ y`.
|
||||
sess.emit_err(MovedWhileBorrowed { span: pat.span, occurrences });
|
||||
sess.dcx().emit_err(MovedWhileBorrowed { span: pat.span, occurrences });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -905,7 +905,7 @@ fn report_non_exhaustive_match<'p, 'tcx>(
|
|||
let pattern;
|
||||
let patterns_len;
|
||||
if is_empty_match && !non_empty_enum {
|
||||
return cx.tcx.sess.emit_err(NonExhaustivePatternsTypeNotEmpty {
|
||||
return cx.tcx.dcx().emit_err(NonExhaustivePatternsTypeNotEmpty {
|
||||
cx,
|
||||
expr_span,
|
||||
span: sp,
|
||||
|
|
|
@ -185,16 +185,16 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
let e = if let ty::Adt(def, ..) = non_sm_ty.kind() {
|
||||
if def.is_union() {
|
||||
let err = UnionPattern { span: self.span };
|
||||
self.tcx().sess.emit_err(err)
|
||||
self.tcx().dcx().emit_err(err)
|
||||
} else {
|
||||
// fatal avoids ICE from resolution of nonexistent method (rare case).
|
||||
self.tcx()
|
||||
.sess
|
||||
.dcx()
|
||||
.emit_fatal(TypeNotStructural { span: self.span, non_sm_ty })
|
||||
}
|
||||
} else {
|
||||
let err = InvalidPattern { span: self.span, non_sm_ty };
|
||||
self.tcx().sess.emit_err(err)
|
||||
self.tcx().dcx().emit_err(err)
|
||||
};
|
||||
// All branches above emitted an error. Don't print any more lints.
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
|
@ -207,7 +207,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
// This is because `mir::Const::ty` has already been handled by `Self::recur`
|
||||
// and the invalid types may be ignored.
|
||||
let err = TypeNotStructural { span: self.span, non_sm_ty };
|
||||
let e = self.tcx().sess.emit_err(err);
|
||||
let e = self.tcx().dcx().emit_err(err);
|
||||
let kind = PatKind::Error(e);
|
||||
return Box::new(Pat { span: self.span, ty: cv.ty(), kind });
|
||||
} else if !self.saw_const_match_lint.get() {
|
||||
|
@ -352,7 +352,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
return Err(FallbackToOpaqueConst);
|
||||
}
|
||||
ty::FnDef(..) => {
|
||||
let e = tcx.sess.emit_err(InvalidPattern { span, non_sm_ty: ty });
|
||||
let e = tcx.dcx().emit_err(InvalidPattern { span, non_sm_ty: ty });
|
||||
self.saw_const_match_error.set(Some(e));
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
PatKind::Error(e)
|
||||
|
@ -360,7 +360,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
ty::Adt(adt_def, _) if !self.type_marked_structural(ty) => {
|
||||
debug!("adt_def {:?} has !type_marked_structural for cv.ty: {:?}", adt_def, ty,);
|
||||
let err = TypeNotStructural { span, non_sm_ty: ty };
|
||||
let e = tcx.sess.emit_err(err);
|
||||
let e = tcx.dcx().emit_err(err);
|
||||
self.saw_const_match_error.set(Some(e));
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
PatKind::Error(e)
|
||||
|
@ -449,7 +449,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
PatKind::Error(e)
|
||||
} else {
|
||||
let err = TypeNotStructural { span, non_sm_ty: *pointee_ty };
|
||||
let e = tcx.sess.emit_err(err);
|
||||
let e = tcx.dcx().emit_err(err);
|
||||
self.saw_const_match_error.set(Some(e));
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
PatKind::Error(e)
|
||||
|
@ -462,7 +462,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
_ => {
|
||||
if !pointee_ty.is_sized(tcx, param_env) && !pointee_ty.is_slice() {
|
||||
let err = UnsizedPattern { span, non_sm_ty: *pointee_ty };
|
||||
let e = tcx.sess.emit_err(err);
|
||||
let e = tcx.dcx().emit_err(err);
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
PatKind::Error(e)
|
||||
} else {
|
||||
|
@ -498,7 +498,7 @@ impl<'tcx> ConstToPat<'tcx> {
|
|||
}
|
||||
_ => {
|
||||
let err = InvalidPattern { span, non_sm_ty: ty };
|
||||
let e = tcx.sess.emit_err(err);
|
||||
let e = tcx.dcx().emit_err(err);
|
||||
self.saw_const_match_error.set(Some(e));
|
||||
// We errored. Signal that in the pattern, so that follow up errors can be silenced.
|
||||
PatKind::Error(e)
|
||||
|
|
|
@ -105,7 +105,7 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
let msg = format!(
|
||||
"found bad range pattern endpoint `{expr:?}` outside of error recovery"
|
||||
);
|
||||
return Err(self.tcx.sess.span_delayed_bug(expr.span, msg));
|
||||
return Err(self.tcx.dcx().span_delayed_bug(expr.span, msg));
|
||||
};
|
||||
Ok((Some(PatRangeBoundary::Finite(value)), ascr, inline_const))
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
// Detect literal value out of range `[min, max]` inclusive, avoiding use of `-min` to
|
||||
// prevent overflow/panic.
|
||||
if (negated && lit_val > max + 1) || (!negated && lit_val > max) {
|
||||
return Err(self.tcx.sess.emit_err(LiteralOutOfRange { span, ty, min, max }));
|
||||
return Err(self.tcx.dcx().emit_err(LiteralOutOfRange { span, ty, min, max }));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -175,7 +175,7 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
) -> Result<PatKind<'tcx>, ErrorGuaranteed> {
|
||||
if lo_expr.is_none() && hi_expr.is_none() {
|
||||
let msg = "found twice-open range pattern (`..`) outside of error recovery";
|
||||
return Err(self.tcx.sess.span_delayed_bug(span, msg));
|
||||
return Err(self.tcx.dcx().span_delayed_bug(span, msg));
|
||||
}
|
||||
|
||||
let (lo, lo_ascr, lo_inline) = self.lower_pattern_range_endpoint(lo_expr)?;
|
||||
|
@ -207,13 +207,13 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
self.error_on_literal_overflow(hi_expr, ty)?;
|
||||
let e = match end {
|
||||
RangeEnd::Included => {
|
||||
self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanOrEqualToUpper {
|
||||
self.tcx.dcx().emit_err(LowerRangeBoundMustBeLessThanOrEqualToUpper {
|
||||
span,
|
||||
teach: self.tcx.sess.teach(&error_code!(E0030)).then_some(()),
|
||||
})
|
||||
}
|
||||
RangeEnd::Excluded => {
|
||||
self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanUpper { span })
|
||||
self.tcx.dcx().emit_err(LowerRangeBoundMustBeLessThanUpper { span })
|
||||
}
|
||||
};
|
||||
return Err(e);
|
||||
|
@ -454,12 +454,12 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
_ => {
|
||||
let e = match res {
|
||||
Res::Def(DefKind::ConstParam, _) => {
|
||||
self.tcx.sess.emit_err(ConstParamInPattern { span })
|
||||
self.tcx.dcx().emit_err(ConstParamInPattern { span })
|
||||
}
|
||||
Res::Def(DefKind::Static(_), _) => {
|
||||
self.tcx.sess.emit_err(StaticInPattern { span })
|
||||
self.tcx.dcx().emit_err(StaticInPattern { span })
|
||||
}
|
||||
_ => self.tcx.sess.emit_err(NonConstPath { span }),
|
||||
_ => self.tcx.dcx().emit_err(NonConstPath { span }),
|
||||
};
|
||||
PatKind::Error(e)
|
||||
}
|
||||
|
@ -513,12 +513,12 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
// It should be assoc consts if there's no error but we cannot resolve it.
|
||||
debug_assert!(is_associated_const);
|
||||
|
||||
let e = self.tcx.sess.emit_err(AssocConstInPattern { span });
|
||||
let e = self.tcx.dcx().emit_err(AssocConstInPattern { span });
|
||||
return pat_from_kind(PatKind::Error(e));
|
||||
}
|
||||
|
||||
Err(_) => {
|
||||
let e = self.tcx.sess.emit_err(CouldNotEvalConstPattern { span });
|
||||
let e = self.tcx.dcx().emit_err(CouldNotEvalConstPattern { span });
|
||||
return pat_from_kind(PatKind::Error(e));
|
||||
}
|
||||
};
|
||||
|
@ -573,11 +573,11 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
Err(ErrorHandled::TooGeneric(_)) => {
|
||||
// While `Reported | Linted` cases will have diagnostics emitted already
|
||||
// it is not true for TooGeneric case, so we need to give user more information.
|
||||
let e = self.tcx.sess.emit_err(ConstPatternDependsOnGenericParameter { span });
|
||||
let e = self.tcx.dcx().emit_err(ConstPatternDependsOnGenericParameter { span });
|
||||
pat_from_kind(PatKind::Error(e))
|
||||
}
|
||||
Err(_) => {
|
||||
let e = self.tcx.sess.emit_err(CouldNotEvalConstPattern { span });
|
||||
let e = self.tcx.dcx().emit_err(CouldNotEvalConstPattern { span });
|
||||
pat_from_kind(PatKind::Error(e))
|
||||
}
|
||||
}
|
||||
|
@ -646,7 +646,7 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
Ok(val) => self.const_to_pat(mir::Const::Val(val, ty), id, span, None).kind,
|
||||
Err(ErrorHandled::TooGeneric(_)) => {
|
||||
// If we land here it means the const can't be evaluated because it's `TooGeneric`.
|
||||
let e = self.tcx.sess.emit_err(ConstPatternDependsOnGenericParameter { span });
|
||||
let e = self.tcx.dcx().emit_err(ConstPatternDependsOnGenericParameter { span });
|
||||
PatKind::Error(e)
|
||||
}
|
||||
Err(ErrorHandled::Reported(err, ..)) => PatKind::Error(err.into()),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue