From: Artur Ryt Date: Tue, 4 Apr 2023 13:21:04 +0000 (-0400) Subject: [python] Expose clang_Location_isInSystemHeader X-Git-Tag: upstream/17.0.6~12733 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7161e73ca0afdf9cc016ce4e9f1e23a6a140b51;p=platform%2Fupstream%2Fllvm.git [python] Expose clang_Location_isInSystemHeader Add is_in_system_header property for Location class. Corresponding unit test was also added. Differential Revision: https://reviews.llvm.org/D147414 --- diff --git a/clang/bindings/python/clang/cindex.py b/clang/bindings/python/clang/cindex.py index 5d13b7b..6d33650 100644 --- a/clang/bindings/python/clang/cindex.py +++ b/clang/bindings/python/clang/cindex.py @@ -286,6 +286,11 @@ class SourceLocation(Structure): """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 @@ functionList = [ [Cursor], c_longlong), + ("clang_Location_isInSystemHeader", + [SourceLocation], + bool), + ("clang_Type_getAlignOf", [Type], c_longlong), diff --git a/clang/bindings/python/tests/cindex/test_location.py b/clang/bindings/python/tests/cindex/test_location.py index fbe9770..0d2c69d 100644 --- a/clang/bindings/python/tests/cindex/test_location.py +++ b/clang/bindings/python/tests/cindex/test_location.py @@ -7,6 +7,7 @@ from clang.cindex import Cursor 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 @@ class TestLocation(unittest.TestCase): 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) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 100be1b..e39c860 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -451,6 +451,12 @@ Static Analyzer Sanitizers ---------- +Python Binding Changes +---------------------- +The following methods have been added: + +- ``clang_Location_isInSystemHeader`` exposed via the ``is_in_system_header`` + property of the `Location` class. Additional Information ======================