Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlena Laskavaia2010-12-01 02:36:00 +0000
committerAlena Laskavaia2010-12-01 02:36:00 +0000
commit83ea511e247e130e3a449ab3be005f3e8133dcc6 (patch)
tree69d2ecb511fe5b64bedd9c8c173344ad47a3cc95 /codan/org.eclipse.cdt.codan.core.cxx
parentacfb30df58825807f0c23821b8b51a93a3b05641 (diff)
downloadorg.eclipse.cdt-83ea511e247e130e3a449ab3be005f3e8133dcc6.tar.gz
org.eclipse.cdt-83ea511e247e130e3a449ab3be005f3e8133dcc6.tar.xz
org.eclipse.cdt-83ea511e247e130e3a449ab3be005f3e8133dcc6.zip
Bug 329497 - checker for no break at the end of case
Diffstat (limited to 'codan/org.eclipse.cdt.codan.core.cxx')
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/CxxAstUtils.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/CxxAstUtils.java b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/CxxAstUtils.java
index f890b27d587..c615e92c2ae 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/CxxAstUtils.java
+++ b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/CxxAstUtils.java
@@ -22,6 +22,7 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
@@ -35,6 +36,7 @@ import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroExpansion;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.IBasicType.Kind;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IFunction;
@@ -408,4 +410,30 @@ public final class CxxAstUtils {
});
return returnSpecifier[0];
}
+
+ /**
+ * @param body
+ * @return
+ */
+ public boolean isThrowStatement(IASTNode body) {
+ if (!(body instanceof IASTExpressionStatement))
+ return false;
+ IASTExpression expression = ((IASTExpressionStatement) body)
+ .getExpression();
+ if (!(expression instanceof IASTUnaryExpression))
+ return false;
+ return ((IASTUnaryExpression) expression).getOperator() == IASTUnaryExpression.op_throw;
+ }
+
+ public boolean isExitStatement(IASTNode body) {
+ if (!(body instanceof IASTExpressionStatement))
+ return false;
+ IASTExpression expression = ((IASTExpressionStatement) body)
+ .getExpression();
+ if (!(expression instanceof IASTFunctionCallExpression))
+ return false;
+ IASTExpression functionNameExpression = ((IASTFunctionCallExpression) expression)
+ .getFunctionNameExpression();
+ return functionNameExpression.getRawSignature().equals("exit"); //$NON-NLS-1$
+ }
}

Back to the top