Port build_reduce_graph
This commit is contained in:
parent
7106800e16
commit
e4f4e58dc3
4 changed files with 235 additions and 51 deletions
|
@ -11,6 +11,8 @@ resolve_added_macro_use =
|
||||||
resolve_ancestor_only =
|
resolve_ancestor_only =
|
||||||
visibilities can only be restricted to ancestor modules
|
visibilities can only be restricted to ancestor modules
|
||||||
|
|
||||||
|
resolve_arguments_macro_use_not_allowed = arguments to `macro_use` are not allowed here
|
||||||
|
|
||||||
resolve_associated_const_with_similar_name_exists =
|
resolve_associated_const_with_similar_name_exists =
|
||||||
there is an associated constant with a similar name
|
there is an associated constant with a similar name
|
||||||
|
|
||||||
|
@ -20,6 +22,10 @@ resolve_associated_fn_with_similar_name_exists =
|
||||||
resolve_associated_type_with_similar_name_exists =
|
resolve_associated_type_with_similar_name_exists =
|
||||||
there is an associated type with a similar name
|
there is an associated type with a similar name
|
||||||
|
|
||||||
|
resolve_attempt_to_define_builtin_macro_twice =
|
||||||
|
attempted to define built-in macro more than once
|
||||||
|
.note = previously defined here
|
||||||
|
|
||||||
resolve_attempt_to_use_non_constant_value_in_constant =
|
resolve_attempt_to_use_non_constant_value_in_constant =
|
||||||
attempt to use a non-constant value in a constant
|
attempt to use a non-constant value in a constant
|
||||||
|
|
||||||
|
@ -32,6 +38,8 @@ resolve_attempt_to_use_non_constant_value_in_constant_with_suggestion =
|
||||||
resolve_attempt_to_use_non_constant_value_in_constant_without_suggestion =
|
resolve_attempt_to_use_non_constant_value_in_constant_without_suggestion =
|
||||||
this would need to be a `{$suggestion}`
|
this would need to be a `{$suggestion}`
|
||||||
|
|
||||||
|
resolve_bad_macro_import = bad macro import
|
||||||
|
|
||||||
resolve_binding_in_never_pattern =
|
resolve_binding_in_never_pattern =
|
||||||
never patterns cannot contain variable bindings
|
never patterns cannot contain variable bindings
|
||||||
.suggestion = use a wildcard `_` instead
|
.suggestion = use a wildcard `_` instead
|
||||||
|
@ -100,13 +108,31 @@ resolve_const_param_in_non_trivial_anon_const =
|
||||||
resolve_const_param_in_ty_of_const_param =
|
resolve_const_param_in_ty_of_const_param =
|
||||||
const parameters may not be used in the type of const parameters
|
const parameters may not be used in the type of const parameters
|
||||||
|
|
||||||
resolve_expected_found =
|
resolve_elided_anonymous_lifetime_report_error =
|
||||||
|
`&` without an explicit lifetime name cannot be used here
|
||||||
|
.label = explicit lifetime name needed here
|
||||||
|
|
||||||
|
resolve_elided_anonymous_lifetime_report_error_suggestion =
|
||||||
|
consider introducing a higher-ranked lifetime here
|
||||||
|
|
||||||
|
resolve_expected_module_found =
|
||||||
expected module, found {$res} `{$path_str}`
|
expected module, found {$res} `{$path_str}`
|
||||||
.label = not a module
|
.label = not a module
|
||||||
|
|
||||||
|
resolve_explicit_anonymous_lifetime_report_error =
|
||||||
|
`'_` cannot be used here
|
||||||
|
.label = `'_` is a reserved lifetime name
|
||||||
|
|
||||||
resolve_explicit_unsafe_traits =
|
resolve_explicit_unsafe_traits =
|
||||||
unsafe traits like `{$ident}` should be implemented explicitly
|
unsafe traits like `{$ident}` should be implemented explicitly
|
||||||
|
|
||||||
|
resolve_extern_crate_loading_macro_not_at_crate_root =
|
||||||
|
an `extern crate` loading macros must be at the crate root
|
||||||
|
|
||||||
|
resolve_extern_crate_self_requires_renaming =
|
||||||
|
`extern crate self;` requires renaming
|
||||||
|
.suggestion = rename the `self` crate to be able to import it
|
||||||
|
|
||||||
resolve_forward_declared_generic_param =
|
resolve_forward_declared_generic_param =
|
||||||
generic parameters with a default cannot use forward declared identifiers
|
generic parameters with a default cannot use forward declared identifiers
|
||||||
.label = defaulted generic parameters cannot be forward declared
|
.label = defaulted generic parameters cannot be forward declared
|
||||||
|
@ -135,17 +161,20 @@ resolve_generic_params_from_outer_item_static = a `static` is a separate item fr
|
||||||
|
|
||||||
resolve_generic_params_from_outer_item_ty_param = type parameter from outer item
|
resolve_generic_params_from_outer_item_ty_param = type parameter from outer item
|
||||||
|
|
||||||
|
|
||||||
resolve_ident_bound_more_than_once_in_parameter_list =
|
resolve_ident_bound_more_than_once_in_parameter_list =
|
||||||
identifier `{$identifier}` is bound more than once in this parameter list
|
identifier `{$identifier}` is bound more than once in this parameter list
|
||||||
.label = used as parameter more than once
|
.label = used as parameter more than once
|
||||||
|
|
||||||
|
resolve_implicit_elided_lifetimes_not_allowed_here = implicit elided lifetime not allowed here
|
||||||
|
|
||||||
resolve_ident_bound_more_than_once_in_same_pattern =
|
resolve_ident_bound_more_than_once_in_same_pattern =
|
||||||
identifier `{$identifier}` is bound more than once in the same pattern
|
identifier `{$identifier}` is bound more than once in the same pattern
|
||||||
.label = used in a pattern more than once
|
.label = used in a pattern more than once
|
||||||
|
|
||||||
resolve_imported_crate = `$crate` may not be imported
|
resolve_imported_crate = `$crate` may not be imported
|
||||||
|
|
||||||
|
resolve_imported_macro_not_found = imported macro not found
|
||||||
|
|
||||||
resolve_imports_cannot_refer_to =
|
resolve_imports_cannot_refer_to =
|
||||||
imports cannot refer to {$what}
|
imports cannot refer to {$what}
|
||||||
|
|
||||||
|
@ -183,11 +212,22 @@ resolve_lowercase_self =
|
||||||
resolve_macro_defined_later =
|
resolve_macro_defined_later =
|
||||||
a macro with the same name exists, but it appears later at here
|
a macro with the same name exists, but it appears later at here
|
||||||
|
|
||||||
|
resolve_macro_expanded_extern_crate_cannot_shadow_extern_arguments =
|
||||||
|
macro-expanded `extern crate` items cannot shadow names passed with `--extern`
|
||||||
|
|
||||||
resolve_macro_expected_found =
|
resolve_macro_expected_found =
|
||||||
expected {$expected}, found {$found} `{$macro_path}`
|
expected {$expected}, found {$found} `{$macro_path}`
|
||||||
|
|
||||||
|
resolve_macro_extern_deprecated =
|
||||||
|
`#[macro_escape]` is a deprecated synonym for `#[macro_use]`
|
||||||
|
.help = try an outer attribute: `#[macro_use]`
|
||||||
|
|
||||||
resolve_macro_use_extern_crate_self = `#[macro_use]` is not supported on `extern crate self`
|
resolve_macro_use_extern_crate_self = `#[macro_use]` is not supported on `extern crate self`
|
||||||
|
|
||||||
|
resolve_macro_use_name_already_in_use =
|
||||||
|
`{$name}` is already in scope
|
||||||
|
.note = macro-expanded `#[macro_use]`s may not shadow existing macros (see RFC 1560)
|
||||||
|
|
||||||
resolve_method_not_member_of_trait =
|
resolve_method_not_member_of_trait =
|
||||||
method `{$method}` is not a member of trait `{$trait_}`
|
method `{$method}` is not a member of trait `{$trait_}`
|
||||||
.label = not a member of trait `{$trait_}`
|
.label = not a member of trait `{$trait_}`
|
||||||
|
@ -217,6 +257,8 @@ resolve_param_in_ty_of_const_param =
|
||||||
the type of const parameters must not depend on other generic parameters
|
the type of const parameters must not depend on other generic parameters
|
||||||
.label = the type must not depend on the parameter `{$name}`
|
.label = the type must not depend on the parameter `{$name}`
|
||||||
|
|
||||||
|
resolve_pattern_doesnt_bind_name = pattern doesn't bind `{$name}`
|
||||||
|
|
||||||
resolve_proc_macro_same_crate = can't use a procedural macro from the same crate that defines it
|
resolve_proc_macro_same_crate = can't use a procedural macro from the same crate that defines it
|
||||||
.help = you can define integration tests in a directory named `tests`
|
.help = you can define integration tests in a directory named `tests`
|
||||||
|
|
||||||
|
@ -254,6 +296,9 @@ resolve_self_in_generic_param_default =
|
||||||
generic parameters cannot use `Self` in their defaults
|
generic parameters cannot use `Self` in their defaults
|
||||||
.label = `Self` in generic parameter default
|
.label = `Self` in generic parameter default
|
||||||
|
|
||||||
|
resolve_static_lifetime_is_reserved = invalid lifetime parameter name: `{$ident}`
|
||||||
|
.label = 'static is a reserved lifetime name
|
||||||
|
|
||||||
resolve_tool_module_imported =
|
resolve_tool_module_imported =
|
||||||
cannot use a tool module through an import
|
cannot use a tool module through an import
|
||||||
.note = the tool module imported here
|
.note = the tool module imported here
|
||||||
|
@ -284,12 +329,18 @@ resolve_undeclared_label =
|
||||||
use of undeclared label `{$name}`
|
use of undeclared label `{$name}`
|
||||||
.label = undeclared label `{$name}`
|
.label = undeclared label `{$name}`
|
||||||
|
|
||||||
|
resolve_underscore_lifetime_is_reserved = `'_` cannot be used here
|
||||||
|
.label = `'_` is a reserved lifetime name
|
||||||
|
|
||||||
resolve_unexpected_res_change_ty_to_const_param_sugg =
|
resolve_unexpected_res_change_ty_to_const_param_sugg =
|
||||||
you might have meant to write a const parameter here
|
you might have meant to write a const parameter here
|
||||||
|
|
||||||
resolve_unexpected_res_use_at_op_in_slice_pat_with_range_sugg =
|
resolve_unexpected_res_use_at_op_in_slice_pat_with_range_sugg =
|
||||||
if you meant to collect the rest of the slice in `{$ident}`, use the at operator
|
if you meant to collect the rest of the slice in `{$ident}`, use the at operator
|
||||||
|
|
||||||
|
resolve_unnamed_crate_root_import =
|
||||||
|
crate root imports need to be explicitly named: `use crate as name;`
|
||||||
|
|
||||||
resolve_unreachable_label =
|
resolve_unreachable_label =
|
||||||
use of unreachable label `{$name}`
|
use of unreachable label `{$name}`
|
||||||
.label = unreachable label `{$name}`
|
.label = unreachable label `{$name}`
|
||||||
|
@ -312,3 +363,8 @@ resolve_variable_bound_with_different_mode =
|
||||||
variable `{$variable_name}` is bound inconsistently across alternatives separated by `|`
|
variable `{$variable_name}` is bound inconsistently across alternatives separated by `|`
|
||||||
.label = bound in different ways
|
.label = bound in different ways
|
||||||
.first_binding_span = first binding
|
.first_binding_span = first binding
|
||||||
|
|
||||||
|
resolve_variable_is_not_bound_in_all_patterns =
|
||||||
|
variable `{$name}` is not bound in all patterns
|
||||||
|
|
||||||
|
resolve_variable_not_in_all_patterns = variable not in all patterns
|
||||||
|
|
|
@ -19,7 +19,6 @@ use rustc_ast::{self as ast, AssocItem, AssocItemKind, MetaItemKind, StmtKind};
|
||||||
use rustc_ast::{Block, ForeignItem, ForeignItemKind, Impl, Item, ItemKind, NodeId};
|
use rustc_ast::{Block, ForeignItem, ForeignItemKind, Impl, Item, ItemKind, NodeId};
|
||||||
use rustc_attr as attr;
|
use rustc_attr as attr;
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use rustc_errors::{codes::*, struct_span_code_err, Applicability};
|
|
||||||
use rustc_expand::expand::AstFragment;
|
use rustc_expand::expand::AstFragment;
|
||||||
use rustc_hir::def::{self, *};
|
use rustc_hir::def::{self, *};
|
||||||
use rustc_hir::def_id::{DefId, LocalDefId, CRATE_DEF_ID};
|
use rustc_hir::def_id::{DefId, LocalDefId, CRATE_DEF_ID};
|
||||||
|
@ -529,11 +528,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ident.name == kw::Crate {
|
if ident.name == kw::Crate {
|
||||||
self.r.dcx().span_err(
|
self.r.dcx().emit_err(errors::UnnamedCrateRootImport { span: ident.span });
|
||||||
ident.span,
|
|
||||||
"crate root imports need to be explicitly named: \
|
|
||||||
`use crate as name;`",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let kind = ImportKind::Single {
|
let kind = ImportKind::Single {
|
||||||
|
@ -848,16 +843,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
let expansion = parent_scope.expansion;
|
let expansion = parent_scope.expansion;
|
||||||
|
|
||||||
let (used, module, binding) = if orig_name.is_none() && ident.name == kw::SelfLower {
|
let (used, module, binding) = if orig_name.is_none() && ident.name == kw::SelfLower {
|
||||||
self.r
|
self.r.dcx().emit_err(errors::ExternCrateSelfRequiresRenaming { span: sp });
|
||||||
.dcx()
|
|
||||||
.struct_span_err(item.span, "`extern crate self;` requires renaming")
|
|
||||||
.with_span_suggestion(
|
|
||||||
item.span,
|
|
||||||
"rename the `self` crate to be able to import it",
|
|
||||||
"extern crate self as name;",
|
|
||||||
Applicability::HasPlaceholders,
|
|
||||||
)
|
|
||||||
.emit();
|
|
||||||
return;
|
return;
|
||||||
} else if orig_name == Some(kw::SelfLower) {
|
} else if orig_name == Some(kw::SelfLower) {
|
||||||
Some(self.r.graph_root)
|
Some(self.r.graph_root)
|
||||||
|
@ -897,9 +883,11 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
if parent == self.r.graph_root {
|
if parent == self.r.graph_root {
|
||||||
if let Some(entry) = self.r.extern_prelude.get(&ident.normalize_to_macros_2_0()) {
|
if let Some(entry) = self.r.extern_prelude.get(&ident.normalize_to_macros_2_0()) {
|
||||||
if expansion != LocalExpnId::ROOT && orig_name.is_some() && !entry.is_import() {
|
if expansion != LocalExpnId::ROOT && orig_name.is_some() && !entry.is_import() {
|
||||||
let msg = "macro-expanded `extern crate` items cannot \
|
self.r.dcx().emit_err(
|
||||||
shadow names passed with `--extern`";
|
errors::MacroExpandedExternCrateCannotShadowExternArguments {
|
||||||
self.r.dcx().span_err(item.span, msg);
|
span: item.span,
|
||||||
|
},
|
||||||
|
);
|
||||||
// `return` is intended to discard this binding because it's an
|
// `return` is intended to discard this binding because it's an
|
||||||
// unregistered ambiguity error which would result in a panic
|
// unregistered ambiguity error which would result in a panic
|
||||||
// caused by inconsistency `path_res`
|
// caused by inconsistency `path_res`
|
||||||
|
@ -1030,10 +1018,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
allow_shadowing: bool,
|
allow_shadowing: bool,
|
||||||
) {
|
) {
|
||||||
if self.r.macro_use_prelude.insert(name, binding).is_some() && !allow_shadowing {
|
if self.r.macro_use_prelude.insert(name, binding).is_some() && !allow_shadowing {
|
||||||
let msg = format!("`{name}` is already in scope");
|
self.r.dcx().emit_err(errors::MacroUseNameAlreadyInUse { span, name });
|
||||||
let note =
|
|
||||||
"macro-expanded `#[macro_use]`s may not shadow existing macros (see RFC 1560)";
|
|
||||||
self.r.dcx().struct_span_err(span, msg).with_note(note).emit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1044,13 +1029,9 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
for attr in &item.attrs {
|
for attr in &item.attrs {
|
||||||
if attr.has_name(sym::macro_use) {
|
if attr.has_name(sym::macro_use) {
|
||||||
if self.parent_scope.module.parent.is_some() {
|
if self.parent_scope.module.parent.is_some() {
|
||||||
struct_span_code_err!(
|
self.r.dcx().emit_err(errors::ExternCrateLoadingMacroNotAtCrateRoot {
|
||||||
self.r.dcx(),
|
span: item.span,
|
||||||
item.span,
|
});
|
||||||
E0468,
|
|
||||||
"an `extern crate` loading macros must be at the crate root"
|
|
||||||
)
|
|
||||||
.emit();
|
|
||||||
}
|
}
|
||||||
if let ItemKind::ExternCrate(Some(orig_name)) = item.kind {
|
if let ItemKind::ExternCrate(Some(orig_name)) = item.kind {
|
||||||
if orig_name == kw::SelfLower {
|
if orig_name == kw::SelfLower {
|
||||||
|
@ -1058,7 +1039,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let ill_formed = |span| {
|
let ill_formed = |span| {
|
||||||
struct_span_code_err!(self.r.dcx(), span, E0466, "bad macro import").emit();
|
self.r.dcx().emit_err(errors::BadMacroImport { span });
|
||||||
};
|
};
|
||||||
match attr.meta() {
|
match attr.meta() {
|
||||||
Some(meta) => match meta.kind {
|
Some(meta) => match meta.kind {
|
||||||
|
@ -1143,13 +1124,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
allow_shadowing,
|
allow_shadowing,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
struct_span_code_err!(
|
self.r.dcx().emit_err(errors::ImportedMacroNotFound { span: ident.span });
|
||||||
self.r.dcx(),
|
|
||||||
ident.span,
|
|
||||||
E0469,
|
|
||||||
"imported macro not found"
|
|
||||||
)
|
|
||||||
.emit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1160,18 +1135,16 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
fn contains_macro_use(&mut self, attrs: &[ast::Attribute]) -> bool {
|
fn contains_macro_use(&mut self, attrs: &[ast::Attribute]) -> bool {
|
||||||
for attr in attrs {
|
for attr in attrs {
|
||||||
if attr.has_name(sym::macro_escape) {
|
if attr.has_name(sym::macro_escape) {
|
||||||
let msg = "`#[macro_escape]` is a deprecated synonym for `#[macro_use]`";
|
let inner_attribute = matches!(attr.style, ast::AttrStyle::Inner).then_some(());
|
||||||
let mut err = self.r.dcx().struct_span_warn(attr.span, msg);
|
self.r
|
||||||
if let ast::AttrStyle::Inner = attr.style {
|
.dcx()
|
||||||
err.help("try an outer attribute: `#[macro_use]`");
|
.emit_warn(errors::MacroExternDeprecated { span: attr.span, inner_attribute });
|
||||||
}
|
|
||||||
err.emit();
|
|
||||||
} else if !attr.has_name(sym::macro_use) {
|
} else if !attr.has_name(sym::macro_use) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if !attr.is_word() {
|
if !attr.is_word() {
|
||||||
self.r.dcx().span_err(attr.span, "arguments to `macro_use` are not allowed here");
|
self.r.dcx().emit_err(errors::ArgumentsMacroUseNotAllowed { span: attr.span });
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1005,7 +1005,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
ResolutionError::FailedToResolve { segment: None, label, suggestion, module: None },
|
ResolutionError::FailedToResolve { segment: None, label, suggestion, module: None },
|
||||||
),
|
),
|
||||||
VisResolutionError::ExpectedFound(span, path_str, res) => {
|
VisResolutionError::ExpectedFound(span, path_str, res) => {
|
||||||
self.dcx().create_err(errs::ExpectedFound { span, res, path_str })
|
self.dcx().create_err(errs::ExpectedModuleFound { span, res, path_str })
|
||||||
}
|
}
|
||||||
VisResolutionError::Indeterminate(span) => {
|
VisResolutionError::Indeterminate(span) => {
|
||||||
self.dcx().create_err(errs::Indeterminate(span))
|
self.dcx().create_err(errs::Indeterminate(span))
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use rustc_errors::{codes::*, Applicability};
|
#![allow(dead_code)] // TODO : non
|
||||||
|
use rustc_errors::{codes::*, Applicability, MultiSpan};
|
||||||
use rustc_macros::{Diagnostic, Subdiagnostic};
|
use rustc_macros::{Diagnostic, Subdiagnostic};
|
||||||
use rustc_span::{
|
use rustc_span::{
|
||||||
symbol::{Ident, Symbol},
|
symbol::{Ident, Symbol},
|
||||||
|
@ -495,8 +496,8 @@ pub(crate) struct Relative2018 {
|
||||||
pub(crate) struct AncestorOnly(#[primary_span] pub(crate) Span);
|
pub(crate) struct AncestorOnly(#[primary_span] pub(crate) Span);
|
||||||
|
|
||||||
#[derive(Diagnostic)]
|
#[derive(Diagnostic)]
|
||||||
#[diag(resolve_expected_found, code = E0577)]
|
#[diag(resolve_expected_module_found, code = E0577)]
|
||||||
pub(crate) struct ExpectedFound {
|
pub(crate) struct ExpectedModuleFound {
|
||||||
#[primary_span]
|
#[primary_span]
|
||||||
#[label]
|
#[label]
|
||||||
pub(crate) span: Span,
|
pub(crate) span: Span,
|
||||||
|
@ -801,3 +802,157 @@ pub(crate) struct UnexpectedResUseAtOpInSlicePatWithRangeSugg {
|
||||||
pub ident: Ident,
|
pub ident: Ident,
|
||||||
pub snippet: String,
|
pub snippet: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_extern_crate_loading_macro_not_at_crate_root, code = E0468)]
|
||||||
|
pub(crate) struct ExternCrateLoadingMacroNotAtCrateRoot {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_bad_macro_import, code = E0466)]
|
||||||
|
pub(crate) struct BadMacroImport {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_extern_crate_self_requires_renaming)]
|
||||||
|
pub(crate) struct ExternCrateSelfRequiresRenaming {
|
||||||
|
#[primary_span]
|
||||||
|
#[suggestion(code = "extern crate self as name;", applicability = "has-placeholders")]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_macro_use_name_already_in_use)]
|
||||||
|
#[note]
|
||||||
|
pub(crate) struct MacroUseNameAlreadyInUse {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
pub(crate) name: Symbol,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_imported_macro_not_found, code = E0469)]
|
||||||
|
pub(crate) struct ImportedMacroNotFound {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_macro_extern_deprecated)]
|
||||||
|
pub(crate) struct MacroExternDeprecated {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
#[help]
|
||||||
|
pub inner_attribute: Option<()>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_arguments_macro_use_not_allowed)]
|
||||||
|
pub(crate) struct ArgumentsMacroUseNotAllowed {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_unnamed_crate_root_import)]
|
||||||
|
pub(crate) struct UnnamedCrateRootImport {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_macro_expanded_extern_crate_cannot_shadow_extern_arguments)]
|
||||||
|
pub(crate) struct MacroExpandedExternCrateCannotShadowExternArguments {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_elided_anonymous_lifetime_report_error, code = E0637)]
|
||||||
|
pub(crate) struct ElidedAnonymousLivetimeReportError {
|
||||||
|
#[primary_span]
|
||||||
|
#[label]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
#[subdiagnostic]
|
||||||
|
pub(crate) suggestion: Option<ElidedAnonymousLivetimeReportErrorSuggestion>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subdiagnostic)]
|
||||||
|
#[multipart_suggestion(
|
||||||
|
resolve_elided_anonymous_lifetime_report_error_suggestion,
|
||||||
|
applicability = "machine-applicable"
|
||||||
|
)]
|
||||||
|
pub(crate) struct ElidedAnonymousLivetimeReportErrorSuggestion {
|
||||||
|
#[suggestion_part(code = "for<'a> ")]
|
||||||
|
pub(crate) lo: Span,
|
||||||
|
#[suggestion_part(code = "'a ")]
|
||||||
|
pub(crate) hi: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_explicit_anonymous_lifetime_report_error, code = E0637)]
|
||||||
|
pub(crate) struct ExplicitAnonymousLivetimeReportError {
|
||||||
|
#[primary_span]
|
||||||
|
#[label]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_implicit_elided_lifetimes_not_allowed_here, code = E0726)]
|
||||||
|
pub(crate) struct ImplicitElidedLifetimeNotAllowedHere {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_underscore_lifetime_is_reserved, code = E0637)]
|
||||||
|
pub(crate) struct UnderscoreLifetimeIsReserved {
|
||||||
|
#[primary_span]
|
||||||
|
#[label]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_static_lifetime_is_reserved, code = E0262)]
|
||||||
|
pub(crate) struct StaticLifetimeIsReserved {
|
||||||
|
#[primary_span]
|
||||||
|
#[label]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
pub(crate) lifetime: Ident,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_attempt_to_define_builtin_macro_twice, code = E0773)]
|
||||||
|
pub(crate) struct AttemptToDefineBuiltinMacroTwice {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
#[note]
|
||||||
|
pub(crate) note_span: Span,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(resolve_variable_is_not_bound_in_all_patterns, code = E0408)]
|
||||||
|
pub(crate) struct VariableIsNotBoundInAllPatterns {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) multispan: MultiSpan,
|
||||||
|
pub(crate) name: Symbol,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subdiagnostic, Debug, Clone)]
|
||||||
|
#[label(resolve_pattern_doesnt_bind_name)]
|
||||||
|
pub(crate) struct PatternDoesntBindName {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
pub(crate) name: Symbol,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subdiagnostic, Debug, Clone)]
|
||||||
|
#[label(resolve_variable_not_in_all_patterns)]
|
||||||
|
pub(crate) struct VariableNotInAllPatterns {
|
||||||
|
#[primary_span]
|
||||||
|
pub(crate) span: Span,
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue