Index: clang/bindings/python/clang/cindex.py =================================================================== --- clang/bindings/python/clang/cindex.py +++ clang/bindings/python/clang/cindex.py @@ -286,6 +286,11 @@ """Get the file offset represented by this source location.""" return self._get_instantiation()[3] + @property + def is_in_system_header(self): + """Returns true if the given source location is in a system header.""" + return conf.lib.clang_Location_isInSystemHeader(self) + def __eq__(self, other): return conf.lib.clang_equalLocations(self, other) @@ -4131,6 +4136,10 @@ [Cursor], c_longlong), + ("clang_Location_isInSystemHeader", + [SourceLocation], + bool), + ("clang_Type_getAlignOf", [Type], c_longlong), Index: clang/bindings/python/tests/cindex/test_location.py =================================================================== --- clang/bindings/python/tests/cindex/test_location.py +++ clang/bindings/python/tests/cindex/test_location.py @@ -7,6 +7,7 @@ from clang.cindex import File from clang.cindex import SourceLocation from clang.cindex import SourceRange +from clang.cindex import TranslationUnit from .util import get_cursor from .util import get_tu @@ -103,3 +104,17 @@ location3 = SourceLocation.from_position(tu, file, 1, 6) range3 = SourceRange.from_locations(location1, location3) self.assertNotEqual(range1, range3) + + def test_is_system_location(self): + header = os.path.normpath('./fake/fake.h') + tu = TranslationUnit.from_source('fake.c', [f'-isystem{os.path.dirname(header)}'], unsaved_files = [ + ('fake.c', """ +#include +int one; +"""), + (header, "int two();") + ]) + one = get_cursor(tu, 'one') + two = get_cursor(tu, 'two') + self.assertFalse(one.location.is_in_system_header) + self.assertTrue(two.location.is_in_system_header) Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -436,6 +436,13 @@ Sanitizers ---------- +Python Binding Changes +---------------------- + +The following methods have been added: + +- `clang_Location_isInSystemHeader` exposed via `is_in_system_header` property + of `Location` class. Additional Information ======================