Skip to content

Commit a83414b

Browse files
committed
lint: Allow leading underscores on camel case types
1 parent 74c69e1 commit a83414b

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/rustc/middle/lint.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,17 +452,28 @@ fn check_item_path_statement(cx: ty::ctxt, it: @ast::item) {
452452
fn check_item_non_camel_case_types(cx: ty::ctxt, it: @ast::item) {
453453
fn is_camel_case(ident: ast::ident) -> bool {
454454
assert ident.is_not_empty();
455-
let ident = ident_without_trailing_underscores(ident);
455+
let ident = ident_without_trailing_underscores(*ident);
456+
let ident = ident_without_leading_underscores(ident);
456457
char::is_uppercase(str::char_at(ident, 0)) &&
457458
!ident.contains_char('_')
458459
}
459460

460-
fn ident_without_trailing_underscores(ident: ast::ident) -> ~str {
461-
match str::rfind(*ident, |c| c != '_') {
462-
some(idx) => (*ident).slice(0, idx + 1),
461+
fn ident_without_trailing_underscores(ident: ~str) -> ~str {
462+
match str::rfind(ident, |c| c != '_') {
463+
some(idx) => ident.slice(0, idx + 1),
463464
none => {
464465
// all underscores
465-
*ident
466+
ident
467+
}
468+
}
469+
}
470+
471+
fn ident_without_leading_underscores(ident: ~str) -> ~str {
472+
match str::find(ident, |c| c != '_') {
473+
some(idx) => ident.slice(idx, ident.len()),
474+
none => {
475+
// all underscores
476+
ident
466477
}
467478
}
468479
}

0 commit comments

Comments
 (0)