Auto merge of #112198 - compiler-errors:rollup-o2xe4of, r=compiler-errors
Rollup of 7 pull requests Successful merges: - #111670 (Require that const param tys implement `ConstParamTy`) - #111914 (CFI: Fix cfi with async: transform_ty: unexpected GeneratorWitness(Bi…) - #112030 (Migrate `item_trait_alias` to Askama) - #112150 (Support 128-bit atomics on all x86_64 Apple targets) - #112174 (Fix broken link) - #112190 (Improve comments on `TyCtxt` and `GlobalCtxt`.) - #112193 (Check tuple elements are `Sized` in `offset_of`) Failed merges: - #112071 (Group rfcs tests) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
8ebf04225d
78 changed files with 717 additions and 349 deletions
|
@ -115,36 +115,22 @@ pub trait EmissionGuarantee: Sized {
|
|||
) -> DiagnosticBuilder<'_, Self>;
|
||||
}
|
||||
|
||||
/// Private module for sealing the `IsError` helper trait.
|
||||
mod sealed_level_is_error {
|
||||
use crate::Level;
|
||||
|
||||
/// Sealed helper trait for statically checking that a `Level` is an error.
|
||||
pub(crate) trait IsError<const L: Level> {}
|
||||
|
||||
impl IsError<{ Level::Bug }> for () {}
|
||||
impl IsError<{ Level::DelayedBug }> for () {}
|
||||
impl IsError<{ Level::Fatal }> for () {}
|
||||
// NOTE(eddyb) `Level::Error { lint: true }` is also an error, but lints
|
||||
// don't need error guarantees, as their levels are always dynamic.
|
||||
impl IsError<{ Level::Error { lint: false } }> for () {}
|
||||
}
|
||||
|
||||
impl<'a> DiagnosticBuilder<'a, ErrorGuaranteed> {
|
||||
/// Convenience function for internal use, clients should use one of the
|
||||
/// `struct_*` methods on [`Handler`].
|
||||
#[track_caller]
|
||||
pub(crate) fn new_guaranteeing_error<M: Into<DiagnosticMessage>, const L: Level>(
|
||||
pub(crate) fn new_guaranteeing_error<M: Into<DiagnosticMessage>>(
|
||||
handler: &'a Handler,
|
||||
message: M,
|
||||
) -> Self
|
||||
where
|
||||
(): sealed_level_is_error::IsError<L>,
|
||||
{
|
||||
) -> Self {
|
||||
Self {
|
||||
inner: DiagnosticBuilderInner {
|
||||
state: DiagnosticBuilderState::Emittable(handler),
|
||||
diagnostic: Box::new(Diagnostic::new_with_code(L, None, message)),
|
||||
diagnostic: Box::new(Diagnostic::new_with_code(
|
||||
Level::Error { lint: false },
|
||||
None,
|
||||
message,
|
||||
)),
|
||||
},
|
||||
_marker: PhantomData,
|
||||
}
|
||||
|
@ -203,9 +189,7 @@ impl EmissionGuarantee for ErrorGuaranteed {
|
|||
handler: &Handler,
|
||||
msg: impl Into<DiagnosticMessage>,
|
||||
) -> DiagnosticBuilder<'_, Self> {
|
||||
DiagnosticBuilder::new_guaranteeing_error::<_, { Level::Error { lint: false } }>(
|
||||
handler, msg,
|
||||
)
|
||||
DiagnosticBuilder::new_guaranteeing_error(handler, msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#![feature(array_windows)]
|
||||
#![feature(drain_filter)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(adt_const_params)]
|
||||
#![feature(let_chains)]
|
||||
#![feature(never_type)]
|
||||
#![feature(result_option_inspect)]
|
||||
|
@ -845,7 +844,7 @@ impl Handler {
|
|||
&self,
|
||||
msg: impl Into<DiagnosticMessage>,
|
||||
) -> DiagnosticBuilder<'_, ErrorGuaranteed> {
|
||||
DiagnosticBuilder::new_guaranteeing_error::<_, { Level::Error { lint: false } }>(self, msg)
|
||||
DiagnosticBuilder::new_guaranteeing_error(self, msg)
|
||||
}
|
||||
|
||||
/// This should only be used by `rustc_middle::lint::struct_lint_level`. Do not use it for hard errors.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue