summaryrefslogtreecommitdiffstats
path: root/clang/bindings/python/tests
diff options
context:
space:
mode:
authorJonathan Coe <jbcoe@me.com>2017-06-27 22:54:56 +0000
committerJonathan Coe <jbcoe@me.com>2017-06-27 22:54:56 +0000
commit0a5b03b659d03392f43aed3003989a7a3fcbab62 (patch)
treeabc9d40cf7f5a41b7d4b4b1c8db8cc65f56e7605 /clang/bindings/python/tests
parent6f75e2dd48ca7ce22ca7e97684729259ce5ebe57 (diff)
downloadbcm5719-llvm-0a5b03b659d03392f43aed3003989a7a3fcbab62.tar.gz
bcm5719-llvm-0a5b03b659d03392f43aed3003989a7a3fcbab62.zip
[libclang] Support for querying the exception specification type through libclang
Summary: This patch exposes the exception specification type (noexcept, etc.) of a C++ function through libclang and Python clang.cindex. Reviewers: rsmith, aaron.ballman Reviewed By: aaron.ballman Subscribers: jbcoe, cfe-commits Differential Revision: https://reviews.llvm.org/D34091 Patch by Andrew Bennieston llvm-svn: 306483
Diffstat (limited to 'clang/bindings/python/tests')
-rw-r--r--clang/bindings/python/tests/test_exception_specification_kind.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/bindings/python/tests/test_exception_specification_kind.py b/clang/bindings/python/tests/test_exception_specification_kind.py
new file mode 100644
index 00000000000..543d47f7db9
--- /dev/null
+++ b/clang/bindings/python/tests/test_exception_specification_kind.py
@@ -0,0 +1,27 @@
+import clang.cindex
+from clang.cindex import ExceptionSpecificationKind
+from .util import get_tu
+
+
+def find_function_declarations(node, declarations=[]):
+ if node.kind == clang.cindex.CursorKind.FUNCTION_DECL:
+ declarations.append((node.spelling, node.exception_specification_kind))
+ for child in node.get_children():
+ declarations = find_function_declarations(child, declarations)
+ return declarations
+
+
+def test_exception_specification_kind():
+ source = """int square1(int x);
+ int square2(int x) noexcept;
+ int square3(int x) noexcept(noexcept(x * x));"""
+
+ tu = get_tu(source, lang='cpp', flags=['-std=c++14'])
+
+ declarations = find_function_declarations(tu.cursor)
+ expected = [
+ ('square1', ExceptionSpecificationKind.NONE),
+ ('square2', ExceptionSpecificationKind.BASIC_NOEXCEPT),
+ ('square3', ExceptionSpecificationKind.COMPUTED_NOEXCEPT)
+ ]
+ assert declarations == expected
OpenPOWER on IntegriCloud