importosfromclang.cindeximportConfigif'CLANG_LIBRARY_PATH'inos.environ:Config.set_library_path(os.environ['CLANG_LIBRARY_PATH'])fromclang.cindeximportLinkageKindfromclang.cindeximportCursorfromclang.cindeximportTranslationUnitfrom.utilimportget_cursorfrom.utilimportget_tuimportunittestclassTestLinkage(unittest.TestCase):deftest_linkage(self):"""Ensure that linkage specifers are available on cursors"""tu=get_tu("""void foo() { int no_linkage; }
static int internal;
namespace { struct unique_external_type {} }
unique_external_type unique_external;
extern int external;
""",lang='cpp')no_linkage=get_cursor(tu.cursor,'no_linkage')self.assertEqual(no_linkage.linkage,LinkageKind.NO_LINKAGE)internal=get_cursor(tu.cursor,'internal')self.assertEqual(internal.linkage,LinkageKind.INTERNAL)unique_external=get_cursor(tu.cursor,'unique_external')self.assertEqual(unique_external.linkage,LinkageKind.UNIQUE_EXTERNAL)external=get_cursor(tu.cursor,'external')self.assertEqual(external.linkage,LinkageKind.EXTERNAL)