From 8ad690e18aed9e9a30f8bbfe5418b3ccc53f4c8c Mon Sep 17 00:00:00 2001 From: Tomasz Wesolowski Date: Mon, 27 Jun 2011 20:29:36 -0400 Subject: [PATCH] Bug 345687 - [fp] "No return, in function returning non-void" for compound statement at the end --- .../cdt/codan/internal/checkers/ReturnChecker.java | 2 +- .../core/internal/checkers/ReturnCheckerTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java index b917dece9bd..86a9d9e25a5 100644 --- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java +++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java @@ -192,7 +192,7 @@ public class ReturnChecker extends AbstractAstFunctionChecker { */ private boolean isCompoundStatement(IASTStatement last) { return last instanceof IASTIfStatement || last instanceof IASTWhileStatement || last instanceof IASTDoStatement - || last instanceof IASTForStatement || last instanceof IASTSwitchStatement; + || last instanceof IASTForStatement || last instanceof IASTSwitchStatement || last instanceof IASTCompoundStatement; } protected boolean isFuncExitStatement(IASTStatement statement) { diff --git a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java index b69f416b1dd..aba819266d8 100644 --- a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java +++ b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ReturnCheckerTest.java @@ -256,6 +256,16 @@ public class ReturnCheckerTest extends CheckerTestCase { checkErrorLine(1); } + // int f345687() { + // { + // return 0; + // } + // } + public void testNextedBlock_Bug345687() { + loadCodeAndRunCpp(getAboveComment()); + checkNoErrors(); + } + // int // fp_goto(int a) // {