summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/CheckSpecifier.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-12-07 15:08:00 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-12-07 15:08:00 +0100
commit988ec82bb54d74a78c2f3d73f7ea2a54cdf329f2 (patch)
tree4191acf035b2c591d0225ac29e941944f95528bc /src/shared/cplusplus/CheckSpecifier.cpp
parentf618a9a2963ac519808385dbd35aeac34e537f67 (diff)
downloadqt-creator-988ec82bb54d74a78c2f3d73f7ea2a54cdf329f2.tar.gz
Check for unnecessary semicolons after function definitions.
Diffstat (limited to 'src/shared/cplusplus/CheckSpecifier.cpp')
-rw-r--r--src/shared/cplusplus/CheckSpecifier.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/shared/cplusplus/CheckSpecifier.cpp b/src/shared/cplusplus/CheckSpecifier.cpp
index 03b2d53d97..5b32762c69 100644
--- a/src/shared/cplusplus/CheckSpecifier.cpp
+++ b/src/shared/cplusplus/CheckSpecifier.cpp
@@ -347,8 +347,17 @@ bool CheckSpecifier::visit(ClassSpecifierAST *ast)
int previousVisibility = semantic()->switchVisibility(visibility);
int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod);
- for (DeclarationListAST *member = ast->member_specifier_list; member; member = member->next) {
- semantic()->check(member->value, klass->members());
+ DeclarationAST *previousDeclaration = 0;
+ for (DeclarationListAST *it = ast->member_specifier_list; it; it = it->next) {
+ DeclarationAST *declaration = it->value;
+ semantic()->check(declaration, klass->members());
+
+ if (previousDeclaration && declaration &&
+ declaration->asEmptyDeclaration() != 0 &&
+ previousDeclaration->asFunctionDefinition() != 0)
+ translationUnit()->warning(declaration->firstToken(), "unnecessary semicolon after function body");
+
+ previousDeclaration = declaration;
}
(void) semantic()->switchMethodKey(previousMethodKey);