rustc_passes: remove huge error imports
This commit is contained in:
parent
3478b162f3
commit
a399f0ca84
2 changed files with 57 additions and 56 deletions
|
@ -4,11 +4,7 @@
|
|||
//! conflicts between multiple such attributes attached to the same
|
||||
//! item.
|
||||
|
||||
use crate::errors::{
|
||||
self, AttrApplication, DebugVisualizerUnreadable, InvalidAttrAtCrateLevel, ObjectLifetimeErr,
|
||||
OnlyHasEffectOn, ProcMacroDiffArguments, ProcMacroInvalidAbi, ProcMacroMissingArguments,
|
||||
ProcMacroTypeError, ProcMacroUnsafe, TransparentIncompatible, UnrecognizedReprHint,
|
||||
};
|
||||
use crate::errors;
|
||||
use rustc_ast::{ast, AttrStyle, Attribute, LitKind, MetaItemKind, MetaItemLit, NestedMetaItem};
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_errors::{fluent, Applicability, IntoDiagnosticArg, MultiSpan};
|
||||
|
@ -399,7 +395,7 @@ impl CheckAttrVisitor<'_> {
|
|||
UNUSED_ATTRIBUTES,
|
||||
hir_id,
|
||||
attr.span,
|
||||
OnlyHasEffectOn {
|
||||
errors::OnlyHasEffectOn {
|
||||
attr_name: attr.name_or_empty(),
|
||||
target_name: allowed_target.name().replace(' ', "_"),
|
||||
},
|
||||
|
@ -468,7 +464,7 @@ impl CheckAttrVisitor<'_> {
|
|||
ObjectLifetimeDefault::Param(def_id) => tcx.item_name(def_id).to_string(),
|
||||
ObjectLifetimeDefault::Ambiguous => "Ambiguous".to_owned(),
|
||||
};
|
||||
tcx.sess.emit_err(ObjectLifetimeErr { span: p.span, repr });
|
||||
tcx.sess.emit_err(errors::ObjectLifetimeErr { span: p.span, repr });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1715,7 +1711,7 @@ impl CheckAttrVisitor<'_> {
|
|||
match target {
|
||||
Target::Struct | Target::Union | Target::Enum => continue,
|
||||
_ => {
|
||||
self.tcx.sess.emit_err(AttrApplication::StructEnumUnion {
|
||||
self.tcx.sess.emit_err(errors::AttrApplication::StructEnumUnion {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
|
@ -1736,16 +1732,18 @@ impl CheckAttrVisitor<'_> {
|
|||
match target {
|
||||
Target::Struct | Target::Union | Target::Enum | Target::Fn => continue,
|
||||
_ => {
|
||||
self.tcx.sess.emit_err(AttrApplication::StructEnumFunctionUnion {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
self.tcx.sess.emit_err(
|
||||
errors::AttrApplication::StructEnumFunctionUnion {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
sym::packed => {
|
||||
if target != Target::Struct && target != Target::Union {
|
||||
self.tcx.sess.emit_err(AttrApplication::StructUnion {
|
||||
self.tcx.sess.emit_err(errors::AttrApplication::StructUnion {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
|
@ -1756,9 +1754,10 @@ impl CheckAttrVisitor<'_> {
|
|||
sym::simd => {
|
||||
is_simd = true;
|
||||
if target != Target::Struct {
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(AttrApplication::Struct { hint_span: hint.span(), span });
|
||||
self.tcx.sess.emit_err(errors::AttrApplication::Struct {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
@ -1768,7 +1767,7 @@ impl CheckAttrVisitor<'_> {
|
|||
match target {
|
||||
Target::Struct | Target::Union | Target::Enum => continue,
|
||||
_ => {
|
||||
self.tcx.sess.emit_err(AttrApplication::StructEnumUnion {
|
||||
self.tcx.sess.emit_err(errors::AttrApplication::StructEnumUnion {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
|
@ -1789,15 +1788,16 @@ impl CheckAttrVisitor<'_> {
|
|||
| sym::usize => {
|
||||
int_reprs += 1;
|
||||
if target != Target::Enum {
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(AttrApplication::Enum { hint_span: hint.span(), span });
|
||||
self.tcx.sess.emit_err(errors::AttrApplication::Enum {
|
||||
hint_span: hint.span(),
|
||||
span,
|
||||
});
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
self.tcx.sess.emit_err(UnrecognizedReprHint { span: hint.span() });
|
||||
self.tcx.sess.emit_err(errors::UnrecognizedReprHint { span: hint.span() });
|
||||
continue;
|
||||
}
|
||||
};
|
||||
|
@ -1810,9 +1810,10 @@ impl CheckAttrVisitor<'_> {
|
|||
// Error on repr(transparent, <anything else>).
|
||||
if is_transparent && hints.len() > 1 {
|
||||
let hint_spans: Vec<_> = hint_spans.clone().collect();
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(TransparentIncompatible { hint_spans, target: target.to_string() });
|
||||
self.tcx.sess.emit_err(errors::TransparentIncompatible {
|
||||
hint_spans,
|
||||
target: target.to_string(),
|
||||
});
|
||||
}
|
||||
// Warn on repr(u8, u16), repr(C, simd), and c-like-enum-repr(C, u8)
|
||||
if (int_reprs > 1)
|
||||
|
@ -1965,7 +1966,7 @@ impl CheckAttrVisitor<'_> {
|
|||
match std::fs::File::open(&file) {
|
||||
Ok(_) => true,
|
||||
Err(error) => {
|
||||
self.tcx.sess.emit_err(DebugVisualizerUnreadable {
|
||||
self.tcx.sess.emit_err(errors::DebugVisualizerUnreadable {
|
||||
span: meta_item.span,
|
||||
file: &file,
|
||||
error,
|
||||
|
@ -2175,12 +2176,15 @@ impl CheckAttrVisitor<'_> {
|
|||
let drcx = DeepRejectCtxt { treat_obligation_params: TreatParams::AsInfer };
|
||||
|
||||
if sig.abi != Abi::Rust {
|
||||
tcx.sess.emit_err(ProcMacroInvalidAbi { span: hir_sig.span, abi: sig.abi.name() });
|
||||
tcx.sess.emit_err(errors::ProcMacroInvalidAbi {
|
||||
span: hir_sig.span,
|
||||
abi: sig.abi.name(),
|
||||
});
|
||||
self.abort.set(true);
|
||||
}
|
||||
|
||||
if sig.unsafety == Unsafety::Unsafe {
|
||||
tcx.sess.emit_err(ProcMacroUnsafe { span: hir_sig.span });
|
||||
tcx.sess.emit_err(errors::ProcMacroUnsafe { span: hir_sig.span });
|
||||
self.abort.set(true);
|
||||
}
|
||||
|
||||
|
@ -2188,7 +2192,7 @@ impl CheckAttrVisitor<'_> {
|
|||
|
||||
// Typecheck the output
|
||||
if !drcx.types_may_unify(output, tokenstream) {
|
||||
tcx.sess.emit_err(ProcMacroTypeError {
|
||||
tcx.sess.emit_err(errors::ProcMacroTypeError {
|
||||
span: hir_sig.decl.output.span(),
|
||||
found: output,
|
||||
kind,
|
||||
|
@ -2198,7 +2202,7 @@ impl CheckAttrVisitor<'_> {
|
|||
}
|
||||
|
||||
if sig.inputs().len() < expected_input_count {
|
||||
tcx.sess.emit_err(ProcMacroMissingArguments {
|
||||
tcx.sess.emit_err(errors::ProcMacroMissingArguments {
|
||||
expected_input_count,
|
||||
span: hir_sig.span,
|
||||
kind,
|
||||
|
@ -2213,7 +2217,7 @@ impl CheckAttrVisitor<'_> {
|
|||
sig.inputs().iter().zip(hir_sig.decl.inputs).take(expected_input_count)
|
||||
{
|
||||
if !drcx.types_may_unify(*arg, tokenstream) {
|
||||
tcx.sess.emit_err(ProcMacroTypeError {
|
||||
tcx.sess.emit_err(errors::ProcMacroTypeError {
|
||||
span: input.span,
|
||||
found: *arg,
|
||||
kind,
|
||||
|
@ -2228,7 +2232,7 @@ impl CheckAttrVisitor<'_> {
|
|||
let body_id = tcx.hir().body_owned_by(id.def_id);
|
||||
let excess = tcx.hir().body(body_id).params.get(expected_input_count..);
|
||||
if let Some(excess @ [begin @ end] | excess @ [begin, .., end]) = excess {
|
||||
tcx.sess.emit_err(ProcMacroDiffArguments {
|
||||
tcx.sess.emit_err(errors::ProcMacroDiffArguments {
|
||||
span: begin.span.to(end.span),
|
||||
count: excess.len(),
|
||||
kind,
|
||||
|
@ -2378,7 +2382,7 @@ fn check_invalid_crate_level_attr(tcx: TyCtxt<'_>, attrs: &[Attribute]) {
|
|||
if attr.style == AttrStyle::Inner {
|
||||
for attr_to_check in ATTRS_TO_CHECK {
|
||||
if attr.has_name(*attr_to_check) {
|
||||
tcx.sess.emit_err(InvalidAttrAtCrateLevel {
|
||||
tcx.sess.emit_err(errors::InvalidAttrAtCrateLevel {
|
||||
span: attr.span,
|
||||
snippet: tcx.sess.source_map().span_to_snippet(attr.span).ok(),
|
||||
name: *attr_to_check,
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
//! A pass that annotates every item and method with its stability level,
|
||||
//! propagating default levels lexically from parent to children ast nodes.
|
||||
|
||||
use crate::errors::{
|
||||
self, CannotStabilizeDeprecated, DeprecatedAttribute, DuplicateFeatureErr,
|
||||
FeatureOnlyOnNightly, ImpliedFeatureNotExist, InvalidDeprecationVersion, InvalidStability,
|
||||
MissingConstErr, MissingConstStabAttr, MissingStabilityAttr, TraitImplConstStable,
|
||||
UnknownFeature, UselessStability,
|
||||
};
|
||||
use crate::errors;
|
||||
use rustc_attr::{
|
||||
self as attr, rust_version_symbol, ConstStability, Stability, StabilityLevel, Unstable,
|
||||
UnstableReason, VERSION_PLACEHOLDER,
|
||||
|
@ -185,7 +180,7 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> {
|
|||
{
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(MissingConstErr { fn_sig_span: fn_sig.span, const_span });
|
||||
.emit_err(errors::MissingConstErr { fn_sig_span: fn_sig.span, const_span });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +198,7 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> {
|
|||
|
||||
if let Some((rustc_attr::Deprecation { is_since_rustc_version: true, .. }, span)) = &depr {
|
||||
if stab.is_none() {
|
||||
self.tcx.sess.emit_err(DeprecatedAttribute { span: *span });
|
||||
self.tcx.sess.emit_err(errors::DeprecatedAttribute { span: *span });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -219,7 +214,7 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> {
|
|||
if kind == AnnotationKind::Prohibited
|
||||
|| (kind == AnnotationKind::Container && stab.level.is_stable() && is_deprecated)
|
||||
{
|
||||
self.tcx.sess.emit_err(UselessStability { span, item_sp });
|
||||
self.tcx.sess.emit_err(errors::UselessStability { span, item_sp });
|
||||
}
|
||||
|
||||
debug!("annotate: found {:?}", stab);
|
||||
|
@ -235,15 +230,16 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> {
|
|||
{
|
||||
match stab_v.parse::<u64>() {
|
||||
Err(_) => {
|
||||
self.tcx.sess.emit_err(InvalidStability { span, item_sp });
|
||||
self.tcx.sess.emit_err(errors::InvalidStability { span, item_sp });
|
||||
break;
|
||||
}
|
||||
Ok(stab_vp) => match dep_v.parse::<u64>() {
|
||||
Ok(dep_vp) => match dep_vp.cmp(&stab_vp) {
|
||||
Ordering::Less => {
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(CannotStabilizeDeprecated { span, item_sp });
|
||||
self.tcx.sess.emit_err(errors::CannotStabilizeDeprecated {
|
||||
span,
|
||||
item_sp,
|
||||
});
|
||||
break;
|
||||
}
|
||||
Ordering::Equal => continue,
|
||||
|
@ -251,9 +247,10 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> {
|
|||
},
|
||||
Err(_) => {
|
||||
if dep_v != "TBD" {
|
||||
self.tcx
|
||||
.sess
|
||||
.emit_err(InvalidDeprecationVersion { span, item_sp });
|
||||
self.tcx.sess.emit_err(errors::InvalidDeprecationVersion {
|
||||
span,
|
||||
item_sp,
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -527,7 +524,7 @@ impl<'tcx> MissingStabilityAnnotations<'tcx> {
|
|||
&& self.effective_visibilities.is_reachable(def_id)
|
||||
{
|
||||
let descr = self.tcx.def_kind(def_id).descr(def_id.to_def_id());
|
||||
self.tcx.sess.emit_err(MissingStabilityAttr { span, descr });
|
||||
self.tcx.sess.emit_err(errors::MissingStabilityAttr { span, descr });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -555,7 +552,7 @@ impl<'tcx> MissingStabilityAnnotations<'tcx> {
|
|||
|
||||
if is_const && is_stable && missing_const_stability_attribute && is_reachable {
|
||||
let descr = self.tcx.def_kind(def_id).descr(def_id.to_def_id());
|
||||
self.tcx.sess.emit_err(MissingConstStabAttr { span, descr });
|
||||
self.tcx.sess.emit_err(errors::MissingConstStabAttr { span, descr });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -768,7 +765,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'tcx> {
|
|||
&& *constness == hir::Constness::Const
|
||||
&& const_stab.map_or(false, |(stab, _)| stab.is_const_stable())
|
||||
{
|
||||
self.tcx.sess.emit_err(TraitImplConstStable { span: item.span });
|
||||
self.tcx.sess.emit_err(errors::TraitImplConstStable { span: item.span });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -947,7 +944,7 @@ pub fn check_unused_or_stable_features(tcx: TyCtxt<'_>) {
|
|||
}
|
||||
if !lang_features.insert(feature) {
|
||||
// Warn if the user enables a lang feature multiple times.
|
||||
tcx.sess.emit_err(DuplicateFeatureErr { span, feature });
|
||||
tcx.sess.emit_err(errors::DuplicateFeatureErr { span, feature });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -955,14 +952,14 @@ pub fn check_unused_or_stable_features(tcx: TyCtxt<'_>) {
|
|||
let mut remaining_lib_features = FxIndexMap::default();
|
||||
for (feature, span) in declared_lib_features {
|
||||
if !tcx.sess.opts.unstable_features.is_nightly_build() {
|
||||
tcx.sess.emit_err(FeatureOnlyOnNightly {
|
||||
tcx.sess.emit_err(errors::FeatureOnlyOnNightly {
|
||||
span: *span,
|
||||
release_channel: env!("CFG_RELEASE_CHANNEL"),
|
||||
});
|
||||
}
|
||||
if remaining_lib_features.contains_key(&feature) {
|
||||
// Warn if the user enables a lib feature multiple times.
|
||||
tcx.sess.emit_err(DuplicateFeatureErr { span: *span, feature: *feature });
|
||||
tcx.sess.emit_err(errors::DuplicateFeatureErr { span: *span, feature: *feature });
|
||||
}
|
||||
remaining_lib_features.insert(feature, *span);
|
||||
}
|
||||
|
@ -1063,7 +1060,7 @@ pub fn check_unused_or_stable_features(tcx: TyCtxt<'_>) {
|
|||
}
|
||||
|
||||
for (feature, span) in remaining_lib_features {
|
||||
tcx.sess.emit_err(UnknownFeature { span, feature: *feature });
|
||||
tcx.sess.emit_err(errors::UnknownFeature { span, feature: *feature });
|
||||
}
|
||||
|
||||
for (implied_by, feature) in remaining_implications {
|
||||
|
@ -1074,7 +1071,7 @@ pub fn check_unused_or_stable_features(tcx: TyCtxt<'_>) {
|
|||
.map(|(_, span)| span)
|
||||
.or_else(|| local_defined_features.unstable.get(&feature))
|
||||
.expect("feature that implied another does not exist");
|
||||
tcx.sess.emit_err(ImpliedFeatureNotExist { span, feature, implied_by });
|
||||
tcx.sess.emit_err(errors::ImpliedFeatureNotExist { span, feature, implied_by });
|
||||
}
|
||||
|
||||
// FIXME(#44232): the `used_features` table no longer exists, so we
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue