1 | import os |
2 | from clang.cindex import Config |
3 | if 'CLANG_LIBRARY_PATH' in os.environ: |
4 | Config.set_library_path(os.environ['CLANG_LIBRARY_PATH']) |
5 | |
6 | from clang.cindex import LinkageKind |
7 | from clang.cindex import Cursor |
8 | from clang.cindex import TranslationUnit |
9 | |
10 | from .util import get_cursor |
11 | from .util import get_tu |
12 | |
13 | import unittest |
14 | |
15 | |
16 | class TestLinkage(unittest.TestCase): |
17 | def test_linkage(self): |
18 | """Ensure that linkage specifers are available on cursors""" |
19 | |
20 | tu = get_tu(""" |
21 | void foo() { int no_linkage; } |
22 | static int internal; |
23 | namespace { struct unique_external_type {} } |
24 | unique_external_type unique_external; |
25 | extern int external; |
26 | """, lang = 'cpp') |
27 | |
28 | no_linkage = get_cursor(tu.cursor, 'no_linkage') |
29 | self.assertEqual(no_linkage.linkage, LinkageKind.NO_LINKAGE) |
30 | |
31 | internal = get_cursor(tu.cursor, 'internal') |
32 | self.assertEqual(internal.linkage, LinkageKind.INTERNAL) |
33 | |
34 | unique_external = get_cursor(tu.cursor, 'unique_external') |
35 | self.assertEqual(unique_external.linkage, LinkageKind.UNIQUE_EXTERNAL) |
36 | |
37 | external = get_cursor(tu.cursor, 'external') |
38 | self.assertEqual(external.linkage, LinkageKind.EXTERNAL) |
39 | |