Add translatable diagnostic for cannot find in this scope

This commit is contained in:
Tom Martin 2023-06-18 12:15:17 +01:00
parent 50c971a0b7
commit 355a689542
No known key found for this signature in database
GPG key ID: 73A733F9629F5AC5
3 changed files with 23 additions and 4 deletions

View file

@ -267,4 +267,7 @@ resolve_change_import_binding =
you can use `as` to change the binding name of the import
resolve_imports_cannot_refer_to =
imports cannot refer to {$what}
imports cannot refer to {$what}
resolve_cannot_find_ident_in_this_scope =
cannot find {$expected} `{$ident}` in this scope

View file

@ -613,3 +613,12 @@ pub(crate) struct ImportsCannotReferTo<'a> {
pub(crate) span: Span,
pub(crate) what: &'a str,
}
#[derive(Diagnostic)]
#[diag(resolve_cannot_find_ident_in_this_scope)]
pub(crate) struct CannotFindIdentInThisScope<'a> {
#[primary_span]
pub(crate) span: Span,
pub(crate) expected: &'a str,
pub(crate) ident: Ident,
}

View file

@ -1,7 +1,9 @@
//! A bunch of methods and structures more or less related to resolving macros and
//! interface provided by `Resolver` to macro expander.
use crate::errors::{self, AddAsNonDerive, MacroExpectedFound, RemoveSurroundingDerive};
use crate::errors::{
self, AddAsNonDerive, CannotFindIdentInThisScope, MacroExpectedFound, RemoveSurroundingDerive,
};
use crate::Namespace::*;
use crate::{BuiltinMacroState, Determinacy};
use crate::{DeriveData, Finalize, ParentScope, ResolutionError, Resolver, ScopeSet};
@ -793,8 +795,13 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
}
Err(..) => {
let expected = kind.descr_expected();
let msg = format!("cannot find {} `{}` in this scope", expected, ident);
let mut err = self.tcx.sess.struct_span_err(ident.span, msg);
let mut err = self.tcx.sess.create_err(CannotFindIdentInThisScope {
span: ident.span,
expected,
ident,
});
self.unresolved_macro_suggestions(&mut err, kind, &parent_scope, ident, krate);
err.emit();
}