r318456 - Issue -Wempty-body warnings for else blocks
Reid Kleckner via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 16 13:26:18 PST 2017
Author: rnk
Date: Thu Nov 16 13:26:18 2017
New Revision: 318456
URL: http://llvm.org/viewvc/llvm-project?rev=318456&view=rev
Log:
Issue -Wempty-body warnings for else blocks
This looks like it was just an oversight.
Fixes http://llvm.org/pr35319
Modified:
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
cfe/trunk/lib/Sema/SemaStmt.cpp
cfe/trunk/test/SemaCXX/warn-empty-body.cpp
Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=318456&r1=318455&r2=318456&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Thu Nov 16 13:26:18 2017
@@ -8090,6 +8090,8 @@ def err_switch_incomplete_class_type : E
def warn_empty_if_body : Warning<
"if statement has empty body">, InGroup<EmptyBody>;
+def warn_empty_else_body : Warning<
+ "else clause has empty body">, InGroup<EmptyBody>;
def warn_empty_for_body : Warning<
"for loop has empty body">, InGroup<EmptyBody>;
def warn_empty_range_based_for_body : Warning<
Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=318456&r1=318455&r2=318456&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Thu Nov 16 13:26:18 2017
@@ -527,7 +527,9 @@ Sema::ActOnIfStmt(SourceLocation IfLoc,
CondExpr->getExprLoc()))
CommaVisitor(*this).Visit(CondExpr);
- if (!elseStmt)
+ if (elseStmt)
+ DiagnoseEmptyStmtBody(ElseLoc, elseStmt, diag::warn_empty_else_body);
+ else
DiagnoseEmptyStmtBody(CondExpr->getLocEnd(), thenStmt,
diag::warn_empty_if_body);
Modified: cfe/trunk/test/SemaCXX/warn-empty-body.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-empty-body.cpp?rev=318456&r1=318455&r2=318456&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-empty-body.cpp (original)
+++ cfe/trunk/test/SemaCXX/warn-empty-body.cpp Thu Nov 16 13:26:18 2017
@@ -238,6 +238,26 @@ void test6(int x, int y) {
}
}
+void test_if_else(int x) {
+ if (x); // expected-warning{{if statement has empty body}} expected-note{{separate line}}
+
+ if (x)
+ ; // no-warning
+
+ if (x)
+ ; // no-warning
+ else
+ ; // no-warning
+
+ if (x)
+ ; // no-warning
+ else; // expected-warning{{else clause has empty body}} expected-note{{separate line}}
+
+ if (x)
+ ; // no-warning
+ else EMPTY(x); // no-warning
+}
+
void test_errors(int x) {
if (1)
aa; // expected-error{{use of undeclared identifier}}
More information about the cfe-commits
mailing list