diff options
author | Alena Laskavaia | 2010-12-01 02:36:00 +0000 |
---|---|---|
committer | Alena Laskavaia | 2010-12-01 02:36:00 +0000 |
commit | 83ea511e247e130e3a449ab3be005f3e8133dcc6 (patch) | |
tree | 69d2ecb511fe5b64bedd9c8c173344ad47a3cc95 /codan/org.eclipse.cdt.codan.core.cxx | |
parent | acfb30df58825807f0c23821b8b51a93a3b05641 (diff) | |
download | org.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.java | 28 |
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$ + } } |