142 lines
4.1 KiB
Rust
142 lines
4.1 KiB
Rust
use std::io;
|
|
use std::path::Path;
|
|
|
|
use rustc_hir::attrs::CrateType;
|
|
use rustc_macros::Diagnostic;
|
|
use rustc_span::{Span, Symbol};
|
|
use rustc_target::spec::TargetTuple;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(
|
|
"`--crate-name` and `#[crate_name]` are required to match, but `{$crate_name}` != `{$attr_crate_name}`"
|
|
)]
|
|
pub(crate) struct CrateNameDoesNotMatch {
|
|
#[primary_span]
|
|
pub(crate) span: Span,
|
|
pub(crate) crate_name: Symbol,
|
|
pub(crate) attr_crate_name: Symbol,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("crate names cannot start with a `-`, but `{$crate_name}` has a leading hyphen")]
|
|
pub(crate) struct CrateNameInvalid<'a> {
|
|
pub(crate) crate_name: &'a str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("Ferris cannot be used as an identifier")]
|
|
pub struct FerrisIdentifier {
|
|
#[primary_span]
|
|
pub spans: Vec<Span>,
|
|
#[suggestion(
|
|
"try using their name instead",
|
|
code = "{ferris_fix}",
|
|
applicability = "maybe-incorrect"
|
|
)]
|
|
pub first_span: Span,
|
|
pub ferris_fix: &'static str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("identifiers cannot contain emoji: `{$ident}`")]
|
|
pub struct EmojiIdentifier {
|
|
#[primary_span]
|
|
pub spans: Vec<Span>,
|
|
pub ident: Symbol,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("cannot mix `bin` crate type with others")]
|
|
pub struct MixedBinCrate;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("cannot mix `proc-macro` crate type with others")]
|
|
pub struct MixedProcMacroCrate;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("error writing dependencies to `{$path}`: {$error}")]
|
|
pub struct ErrorWritingDependencies<'a> {
|
|
pub path: &'a Path,
|
|
pub error: io::Error,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("the input file \"{$path}\" would be overwritten by the generated executable")]
|
|
pub struct InputFileWouldBeOverWritten<'a> {
|
|
pub path: &'a Path,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(
|
|
"the generated executable for the input file \"{$input_path}\" conflicts with the existing directory \"{$dir_path}\""
|
|
)]
|
|
pub struct GeneratedFileConflictsWithDirectory<'a> {
|
|
pub input_path: &'a Path,
|
|
pub dir_path: &'a Path,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("failed to find or create the directory specified by `--temps-dir`")]
|
|
pub struct TempsDirError;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("failed to find or create the directory specified by `--out-dir`")]
|
|
pub struct OutDirError;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("failed to write file {$path}: {$error}\"")]
|
|
pub struct FailedWritingFile<'a> {
|
|
pub path: &'a Path,
|
|
pub error: io::Error,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(
|
|
"building proc macro crate with `panic=abort` or `panic=immediate-abort` may crash the compiler should the proc-macro panic"
|
|
)]
|
|
pub struct ProcMacroCratePanicAbort;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(
|
|
"due to multiple output types requested, the explicitly specified output file name will be adapted for each output type"
|
|
)]
|
|
pub struct MultipleOutputTypesAdaption;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("ignoring -C extra-filename flag due to -o flag")]
|
|
pub struct IgnoringExtraFilename;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("ignoring --out-dir flag due to -o flag")]
|
|
pub struct IgnoringOutDir;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("can't use option `-o` or `--emit` to write multiple output types to stdout")]
|
|
pub struct MultipleOutputTypesToStdout;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(
|
|
"target feature `{$feature}` must be {$enabled} to ensure that the ABI of the current target can be implemented correctly"
|
|
)]
|
|
#[note(
|
|
"this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!"
|
|
)]
|
|
#[note("for more information, see issue #116344 <https://github.com/rust-lang/rust/issues/116344>")]
|
|
pub(crate) struct AbiRequiredTargetFeature<'a> {
|
|
pub feature: &'a str,
|
|
pub enabled: &'a str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("dropping unsupported crate type `{$crate_type}` for codegen backend `{$codegen_backend}`")]
|
|
pub(crate) struct UnsupportedCrateTypeForCodegenBackend {
|
|
pub(crate) crate_type: CrateType,
|
|
pub(crate) codegen_backend: &'static str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag("dropping unsupported crate type `{$crate_type}` for target `{$target_triple}`")]
|
|
pub(crate) struct UnsupportedCrateTypeForTarget<'a> {
|
|
pub(crate) crate_type: CrateType,
|
|
pub(crate) target_triple: &'a TargetTuple,
|
|
}
|