diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs index 214401b17a1..01fea98dfa0 100644 --- a/src/librustc/lint/builtin.rs +++ b/src/librustc/lint/builtin.rs @@ -754,7 +754,7 @@ impl LintPass for NonCamelCaseTypes { // start with a non-lowercase letter rather than non-uppercase // ones (some scripts don't have a concept of upper/lowercase) - !ident.char_at(0).is_lowercase() && !ident.contains_char('_') + ident.len() > 0 && !ident.char_at(0).is_lowercase() && !ident.contains_char('_') } fn to_camel_case(s: &str) -> String { @@ -768,9 +768,13 @@ impl LintPass for NonCamelCaseTypes { let s = token::get_ident(ident); if !is_camel_case(ident) { - cx.span_lint(NON_CAMEL_CASE_TYPES, span, - format!("{} `{}` should have a camel case name such as `{}`", - sort, s, to_camel_case(s.get())).as_slice()); + let c = to_camel_case(s.get()); + let m = if c.is_empty() { + format!("{} `{}` should have a camel case name such as `CamelCase`", sort, s) + } else { + format!("{} `{}` should have a camel case name such as `{}`", sort, s, c) + }; + cx.span_lint(NON_CAMEL_CASE_TYPES, span, m.as_slice()); } } diff --git a/src/test/compile-fail/lint-non-camel-case-types.rs b/src/test/compile-fail/lint-non-camel-case-types.rs index 784930003d0..f33c7956a14 100644 --- a/src/test/compile-fail/lint-non-camel-case-types.rs +++ b/src/test/compile-fail/lint-non-camel-case-types.rs @@ -37,4 +37,6 @@ struct foo7 { bar: int, } +type __ = int; //~ ERROR type `__` should have a camel case name such as `CamelCase` + fn main() { }