R2RT created this revision. R2RT added a reviewer: aaron.ballman. R2RT added a project: clang. Herald added a subscriber: arphaman. Herald added a project: All. R2RT requested review of this revision. Herald added a subscriber: cfe-commits.
Add `is_in_system_header` property for `Location` class. Corresponding unit test was also added. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147414 Files: clang/bindings/python/clang/cindex.py clang/bindings/python/tests/cindex/test_location.py 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 <fake.h> +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/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 <fake.h> +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/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),
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits