Auto merge of #109638 - NotStirred:suggest/non-derive, r=davidtwco
Add suggestion to remove `derive()` if invoked macro is non-derive Adds to the existing `expected derive macro, found {}` error message: ``` help: remove the surrounding "derive()": --> $DIR/macro-path-prelude-fail-4.rs:1:3 | LL | #[derive(inline)] | ^^^^^^^ ^ ``` This suggestion will either fix the issue, in the case that the macro was valid, or provide a better error message if not Not ready for merge yet, as the highlighted span is only valid for trivial formatting. Is there a nice way to get the parent span of the macro path within `smart_resolve_macro_path`? Closes #109589
This commit is contained in:
commit
194a0bb5d6
8 changed files with 133 additions and 6 deletions
|
@ -481,3 +481,30 @@ pub(crate) struct ToolModuleImported {
|
|||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_module_only)]
|
||||
pub(crate) struct ModuleOnly(#[primary_span] pub(crate) Span);
|
||||
|
||||
#[derive(Diagnostic, Default)]
|
||||
#[diag(resolve_macro_expected_found)]
|
||||
pub(crate) struct MacroExpectedFound<'a> {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) found: &'a str,
|
||||
pub(crate) expected: &'a str,
|
||||
pub(crate) macro_path: &'a str,
|
||||
#[subdiagnostic]
|
||||
pub(crate) remove_surrounding_derive: Option<RemoveSurroundingDerive>,
|
||||
#[subdiagnostic]
|
||||
pub(crate) add_as_non_derive: Option<AddAsNonDerive<'a>>,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic)]
|
||||
#[help(resolve_remove_surrounding_derive)]
|
||||
pub(crate) struct RemoveSurroundingDerive {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic)]
|
||||
#[help(resolve_add_as_non_derive)]
|
||||
pub(crate) struct AddAsNonDerive<'a> {
|
||||
pub(crate) macro_path: &'a str,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue