Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Emit the uppercase variable lint for struct fields that have names wi…
…th uppercase characters
  • Loading branch information
Palmer Cox committed Mar 5, 2014
1 parent e3723dc commit 258dbd0
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
21 changes: 20 additions & 1 deletion src/librustc/middle/lint.rs
Expand Up @@ -212,7 +212,7 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
("uppercase_variables",
LintSpec {
lint: UppercaseVariables,
desc: "variable names should start with a lowercase character",
desc: "variable and structure field names should start with a lowercase character",
default: warn
}),

Expand Down Expand Up @@ -1201,6 +1201,23 @@ fn check_pat_uppercase_variable(cx: &Context, p: &ast::Pat) {
}
}

fn check_struct_uppercase_variable(cx: &Context, s: &ast::StructDef) {
for sf in s.fields.iter() {
match sf.node {
ast::StructField_ { kind: ast::NamedField(ident, _), .. } => {
let s = token::get_ident(ident);
if s.get().char_at(0).is_uppercase() {
cx.span_lint(
UppercaseVariables,
sf.span,
"structure field names should start with a lowercase character");
}
}
_ => {}
}
}
}

fn check_unnecessary_parens_core(cx: &Context, value: &ast::Expr, msg: &str) {
match value.node {
ast::ExprParen(_) => {
Expand Down Expand Up @@ -1665,6 +1682,8 @@ impl<'a> Visitor<()> for Context<'a> {
g: &ast::Generics,
id: ast::NodeId,
_: ()) {
check_struct_uppercase_variable(self, s);

let old_id = self.cur_struct_def_id;
self.cur_struct_def_id = id;
visit::walk_struct_def(self, s, i, g, id, ());
Expand Down
6 changes: 6 additions & 0 deletions src/test/compile-fail/lint-uppercase-variables.rs
Expand Up @@ -13,6 +13,10 @@
use std::io::File;
use std::io::IoError;

struct Something {
X: uint //~ ERROR structure field names should start with a lowercase character
}

fn test(Xx: uint) { //~ ERROR variable names should start with a lowercase character
println!("{}", Xx);
}
Expand All @@ -30,5 +34,7 @@ fn main() {
}

test(1);

let _ = Something { X: 0 };
}

5 comments on commit 258dbd0

@bors
Copy link
Contributor

@bors bors commented on 258dbd0 Mar 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at DaGenix@258dbd0

@bors
Copy link
Contributor

@bors bors commented on 258dbd0 Mar 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging DaGenix/rust/uppercase-variable-lint = 258dbd0 into auto

@bors
Copy link
Contributor

@bors bors commented on 258dbd0 Mar 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DaGenix/rust/uppercase-variable-lint = 258dbd0 merged ok, testing candidate = 712c630

@bors
Copy link
Contributor

@bors bors commented on 258dbd0 Mar 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on 258dbd0 Mar 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = 712c630

Please sign in to comment.