diff --git a/src/librustc_lint/bad_style.rs b/src/librustc_lint/bad_style.rs index 05ba262ef90c0..0c86eb42e7acb 100644 --- a/src/librustc_lint/bad_style.rs +++ b/src/librustc_lint/bad_style.rs @@ -117,22 +117,18 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonCamelCaseTypes { match it.node { hir::ItemTy(..) | + hir::ItemEnum(..) | hir::ItemStruct(..) | hir::ItemUnion(..) => self.check_case(cx, "type", it.name, it.span), hir::ItemTrait(..) => self.check_case(cx, "trait", it.name, it.span), - hir::ItemEnum(ref enum_definition, _) => { - if has_extern_repr { - return; - } - self.check_case(cx, "type", it.name, it.span); - for variant in &enum_definition.variants { - self.check_case(cx, "variant", variant.node.name, variant.span); - } - } _ => (), } } + fn check_variant(&mut self, cx: &LateContext, v: &hir::Variant, _: &hir::Generics) { + self.check_case(cx, "variant", v.node.name, v.span); + } + fn check_generics(&mut self, cx: &LateContext, it: &hir::Generics) { for gen in it.ty_params.iter() { self.check_case(cx, "type parameter", gen.name, gen.span); diff --git a/src/test/run-pass/test-allow-non-camel-case-variant.rs b/src/test/run-pass/test-allow-non-camel-case-variant.rs new file mode 100644 index 0000000000000..c7073b3a95e12 --- /dev/null +++ b/src/test/run-pass/test-allow-non-camel-case-variant.rs @@ -0,0 +1,18 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![deny(non_camel_case_types)] + +pub enum Foo { + #[allow(non_camel_case_types)] + bar +} + +fn main() {}