use rustc_macros::{Diagnostic, LintDiagnostic}; use rustc_middle::ty::{Instance, Ty}; use rustc_span::{Span, Symbol}; #[derive(Diagnostic)] #[diag("reached the recursion limit while instantiating `{$instance}`")] pub(crate) struct RecursionLimit<'tcx> { #[primary_span] pub span: Span, pub instance: Instance<'tcx>, #[note("`{$def_path_str}` defined here")] pub def_span: Span, pub def_path_str: String, } #[derive(Diagnostic)] #[diag("missing optimized MIR for `{$instance}` in the crate `{$crate_name}`")] pub(crate) struct NoOptimizedMir { #[note( "missing optimized MIR for this item (was the crate `{$crate_name}` compiled with `--emit=metadata`?)" )] pub span: Span, pub crate_name: Symbol, pub instance: String, } #[derive(LintDiagnostic)] #[diag("moving {$size} bytes")] #[note( "the current maximum size is {$limit}, but it can be customized with the move_size_limit attribute: `#![move_size_limit = \"...\"]`" )] pub(crate) struct LargeAssignmentsLint { #[label("value moved from here")] pub span: Span, pub size: u64, pub limit: u64, } #[derive(Diagnostic)] #[diag("symbol `{$symbol}` is already defined")] pub(crate) struct SymbolAlreadyDefined { #[primary_span] pub span: Option, pub symbol: String, } #[derive(Diagnostic)] #[diag("unexpected error occurred while dumping monomorphization stats: {$error}")] pub(crate) struct CouldntDumpMonoStats { pub error: String, } #[derive(Diagnostic)] #[diag("the above error was encountered while instantiating `{$kind} {$instance}`")] pub(crate) struct EncounteredErrorWhileInstantiating<'tcx> { #[primary_span] pub span: Span, pub kind: &'static str, pub instance: Instance<'tcx>, } #[derive(Diagnostic)] #[diag("the above error was encountered while instantiating `global_asm`")] pub(crate) struct EncounteredErrorWhileInstantiatingGlobalAsm { #[primary_span] pub span: Span, } #[derive(Diagnostic)] #[diag("using `fn main` requires the standard library")] #[help( "use `#![no_main]` to bypass the Rust generated entrypoint and declare a platform specific entrypoint yourself, usually with `#[no_mangle]`" )] pub(crate) struct StartNotFound; #[derive(Diagnostic)] #[diag("this function {$is_call -> [true] call *[false] definition } uses {$is_scalable -> [true] scalable *[false] SIMD } vector type `{$ty}` which (with the chosen ABI) requires the `{$required_feature}` target feature, which is not enabled{$is_call -> [true] {\" \"}in the caller *[false] {\"\"} }")] #[help( "consider enabling it globally (`-C target-feature=+{$required_feature}`) or locally (`#[target_feature(enable=\"{$required_feature}\")]`)" )] pub(crate) struct AbiErrorDisabledVectorType<'a> { #[primary_span] #[label( "function {$is_call -> [true] called *[false] defined } here" )] pub span: Span, pub required_feature: &'a str, pub ty: Ty<'a>, /// Whether this is a problem at a call site or at a declaration. pub is_call: bool, /// Whether this is a problem with a fixed length vector or a scalable vector pub is_scalable: bool, } #[derive(Diagnostic)] #[diag( "this function {$is_call -> [true] call *[false] definition } uses unsized type `{$ty}` which is not supported with the chosen ABI" )] #[help("only rustic ABIs support unsized parameters")] pub(crate) struct AbiErrorUnsupportedUnsizedParameter<'a> { #[primary_span] #[label( "function {$is_call -> [true] called *[false] defined } here" )] pub span: Span, pub ty: Ty<'a>, /// Whether this is a problem at a call site or at a declaration. pub is_call: bool, } #[derive(Diagnostic)] #[diag( "this function {$is_call -> [true] call *[false] definition } uses SIMD vector type `{$ty}` which is not currently supported with the chosen ABI" )] pub(crate) struct AbiErrorUnsupportedVectorType<'a> { #[primary_span] #[label( "function {$is_call -> [true] called *[false] defined } here" )] pub span: Span, pub ty: Ty<'a>, /// Whether this is a problem at a call site or at a declaration. pub is_call: bool, } #[derive(Diagnostic)] #[diag("this function {$is_call -> [true] call *[false] definition } uses ABI \"{$abi}\" which requires the `{$required_feature}` target feature, which is not enabled{$is_call -> [true] {\" \"}in the caller *[false] {\"\"} }")] #[help( "consider enabling it globally (`-C target-feature=+{$required_feature}`) or locally (`#[target_feature(enable=\"{$required_feature}\")]`)" )] pub(crate) struct AbiRequiredTargetFeature<'a> { #[primary_span] #[label( "function {$is_call -> [true] called *[false] defined } here" )] pub span: Span, pub required_feature: &'a str, pub abi: &'a str, /// Whether this is a problem at a call site or at a declaration. pub is_call: bool, } #[derive(Diagnostic)] #[diag("static initializer forms a cycle involving `{$head}`")] #[note("cyclic static initializers are not supported for target `{$target}`")] pub(crate) struct StaticInitializerCyclic<'a> { #[primary_span] pub span: Span, #[label("part of this cycle")] pub labels: Vec, pub head: &'a str, pub target: &'a str, }