monomorphize_fatal_error = {$error_message}
+monomorphize_unknown_partition_strategy = unknown partitioning strategy
+
+monomorphize_symbol_already_defined = symbol `{$symbol}` is already defined
+
monomorphize_unused_generic_params = item has unused generic parameters
monomorphize_large_assignments =
pub error_message: String,
}
-#[derive(SessionDiagnostic)]
-#[diag(monomorphize::fatal_error)]
-pub struct SpanFatalError {
- #[primary_span]
- pub span: Span,
- pub error_message: String,
-}
-
pub struct UnusedGenericParams {
pub span: Span,
pub param_spans: Vec<Span>,
pub size: u64,
pub limit: u64,
}
+
+#[derive(SessionDiagnostic)]
+#[diag(monomorphize::unknown_partition_strategy)]
+pub struct UnknownPartitionStrategy;
+
+#[derive(SessionDiagnostic)]
+#[diag(monomorphize::symbol_already_defined)]
+pub struct SymbolAlreadyDefined {
+ #[primary_span]
+ pub span: Option<Span>,
+ pub symbol: String,
+}
use crate::collector::InliningMap;
use crate::collector::{self, MonoItemCollectionMode};
-use crate::errors::{FatalError, SpanFatalError};
+use crate::errors::{SymbolAlreadyDefined, UnknownPartitionStrategy};
pub struct PartitioningCx<'a, 'tcx> {
tcx: TyCtxt<'tcx>,
match strategy {
"default" => Box::new(default::DefaultPartitioning),
_ => {
- let error_message = "unknown partitioning strategy".to_string();
- tcx.sess.emit_fatal(FatalError { error_message: error_message.clone() });
+ tcx.sess.emit_fatal(UnknownPartitionStrategy);
}
}
}
(span1, span2) => span1.or(span2),
};
- let error_message = format!("symbol `{}` is already defined", sym1);
-
- if let Some(span) = span {
- tcx.sess.emit_fatal(SpanFatalError { span, error_message: error_message.clone() });
- } else {
- tcx.sess.emit_fatal(FatalError { error_message: error_message.clone() });
- }
+ tcx.sess.emit_fatal(SymbolAlreadyDefined { span, symbol: sym1.to_string() });
}
}
}