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