This commit is contained in:
Hackerpilot 2016-07-05 15:59:15 -07:00
parent 0ccdfa2984
commit b9fa74ba7b
1 changed files with 15 additions and 1 deletions

View File

@ -40,8 +40,19 @@ class StyleChecker : BaseAnalyzer
} }
} }
override void visit(const VariableDeclaration vd)
{
import std.algorithm.iteration : filter;
varIsEnum = !vd.storageClasses.filter!(a => a.token == tok!"enum").empty;
vd.accept(this);
}
override void visit(const Declarator dec) override void visit(const Declarator dec)
{ {
if (varIsEnum)
checkAggregateName("Variable", dec.name);
else
checkLowercaseName("Variable", dec.name); checkLowercaseName("Variable", dec.name);
} }
@ -89,6 +100,8 @@ class StyleChecker : BaseAnalyzer
addErrorMessage(name.line, name.column, KEY, addErrorMessage(name.line, name.column, KEY,
aggregateType ~ " name '" ~ name.text ~ "' does not match style guidelines."); aggregateType ~ " name '" ~ name.text ~ "' does not match style guidelines.");
} }
bool varIsEnum;
} }
unittest unittest
@ -110,6 +123,7 @@ unittest
interface puma {} // [warn]: Interface name 'puma' does not match style guidelines. interface puma {} // [warn]: Interface name 'puma' does not match style guidelines.
struct dog {} // [warn]: Struct name 'dog' does not match style guidelines. struct dog {} // [warn]: Struct name 'dog' does not match style guidelines.
enum racoon { a } // [warn]: Enum name 'racoon' does not match style guidelines. enum racoon { a } // [warn]: Enum name 'racoon' does not match style guidelines.
enum bool Something = false;
}c, sac); }c, sac);
stderr.writeln("Unittest for StyleChecker passed."); stderr.writeln("Unittest for StyleChecker passed.");