diff options
| author | Jonathan Coe <jbcoe@me.com> | 2017-06-27 22:54:56 +0000 |
|---|---|---|
| committer | Jonathan Coe <jbcoe@me.com> | 2017-06-27 22:54:56 +0000 |
| commit | 0a5b03b659d03392f43aed3003989a7a3fcbab62 (patch) | |
| tree | abc9d40cf7f5a41b7d4b4b1c8db8cc65f56e7605 /clang/bindings/python/tests | |
| parent | 6f75e2dd48ca7ce22ca7e97684729259ce5ebe57 (diff) | |
| download | bcm5719-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.py | 27 |
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 |

