diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java index b033eb0e892..a56b94379f5 100644 --- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java +++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java @@ -139,7 +139,11 @@ public class CaseBreakChecker extends AbstractIndexAstChecker implements IChecke if (body == null) return true; if (body instanceof IASTCompoundStatement) { IASTStatement[] statements = ((IASTCompoundStatement) body).getStatements(); - return isFallThroughStamement(statements[statements.length - 1]); + if (statements.length > 0) { + return isFallThroughStamement(statements[statements.length - 1]); + } + + return true; } else if (isBreakOrExitStatement(body)) { return false; } else if (body instanceof IASTExpressionStatement) { diff --git a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java index 0c82b2e0fff..3872ba617e9 100644 --- a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java +++ b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java @@ -558,5 +558,16 @@ public class CaseBreakCheckerTest extends CheckerTestCase { checkNoErrors(); } - + //void foo() + //{ + //switch(0) + //default: + //{ + //} + //} + public void testEmptyCompoundStatement() { + String code = getAboveComment(); + loadCodeAndRun(code); + checkErrorLine(4); + } }