reimpl make non_upper_case_globals lint not report trait impls
This commit is contained in:
parent
c781584079
commit
8cad917e68
2 changed files with 24 additions and 9 deletions
|
@ -33,6 +33,11 @@ pub fn method_context(cx: &LateContext<'_>, id: LocalDefId) -> MethodLateContext
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn assoc_item_in_trait_impl(cx: &LateContext<'_>, ii: &hir::ImplItem<'_>) -> bool {
|
||||||
|
let item = cx.tcx.associated_item(ii.owner_id);
|
||||||
|
item.trait_item_def_id.is_some()
|
||||||
|
}
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
/// The `non_camel_case_types` lint detects types, variants, traits and
|
/// The `non_camel_case_types` lint detects types, variants, traits and
|
||||||
/// type parameters that don't have camel case names.
|
/// type parameters that don't have camel case names.
|
||||||
|
@ -177,6 +182,7 @@ impl EarlyLintPass for NonCamelCaseTypes {
|
||||||
// trait impls where we should have warned for the trait definition already.
|
// trait impls where we should have warned for the trait definition already.
|
||||||
ast::ItemKind::Impl(box ast::Impl { of_trait: None, items, .. }) => {
|
ast::ItemKind::Impl(box ast::Impl { of_trait: None, items, .. }) => {
|
||||||
for it in items {
|
for it in items {
|
||||||
|
// FIXME: this doesn't respect `#[allow(..)]` on the item itself.
|
||||||
if let ast::AssocItemKind::Type(..) = it.kind {
|
if let ast::AssocItemKind::Type(..) = it.kind {
|
||||||
self.check_case(cx, "associated type", &it.ident);
|
self.check_case(cx, "associated type", &it.ident);
|
||||||
}
|
}
|
||||||
|
@ -494,15 +500,6 @@ impl<'tcx> LateLintPass<'tcx> for NonUpperCaseGlobals {
|
||||||
hir::ItemKind::Const(..) => {
|
hir::ItemKind::Const(..) => {
|
||||||
NonUpperCaseGlobals::check_upper_case(cx, "constant", &it.ident);
|
NonUpperCaseGlobals::check_upper_case(cx, "constant", &it.ident);
|
||||||
}
|
}
|
||||||
// we only want to check inherent associated consts, trait consts
|
|
||||||
// are linted at def-site.
|
|
||||||
hir::ItemKind::Impl(hir::Impl { of_trait: None, items, .. }) => {
|
|
||||||
for it in *items {
|
|
||||||
if let hir::AssocItemKind::Const = it.kind {
|
|
||||||
NonUpperCaseGlobals::check_upper_case(cx, "associated constant", &it.ident);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -513,6 +510,12 @@ impl<'tcx> LateLintPass<'tcx> for NonUpperCaseGlobals {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn check_impl_item(&mut self, cx: &LateContext<'_>, ii: &hir::ImplItem<'_>) {
|
||||||
|
if let hir::ImplItemKind::Const(..) = ii.kind && !assoc_item_in_trait_impl(cx, ii) {
|
||||||
|
NonUpperCaseGlobals::check_upper_case(cx, "associated constant", &ii.ident);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn check_pat(&mut self, cx: &LateContext<'_>, p: &hir::Pat<'_>) {
|
fn check_pat(&mut self, cx: &LateContext<'_>, p: &hir::Pat<'_>) {
|
||||||
// Lint for constants that look like binding identifiers (#7526)
|
// Lint for constants that look like binding identifiers (#7526)
|
||||||
if let PatKind::Path(hir::QPath::Resolved(None, ref path)) = p.kind {
|
if let PatKind::Path(hir::QPath::Resolved(None, ref path)) = p.kind {
|
||||||
|
|
12
tests/ui/lint/issue-110573.rs
Normal file
12
tests/ui/lint/issue-110573.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// check-pass
|
||||||
|
|
||||||
|
#![deny(warnings)]
|
||||||
|
|
||||||
|
pub struct Struct;
|
||||||
|
|
||||||
|
impl Struct {
|
||||||
|
#[allow(non_upper_case_globals)]
|
||||||
|
pub const Const: () = ();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
Loading…
Add table
Add a link
Reference in a new issue