diff options
Diffstat (limited to 'debuginfo-tests/dexter/dex/dextIR/LocIR.py')
-rw-r--r-- | debuginfo-tests/dexter/dex/dextIR/LocIR.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/debuginfo-tests/dexter/dex/dextIR/LocIR.py b/debuginfo-tests/dexter/dex/dextIR/LocIR.py new file mode 100644 index 00000000000..52a56a8fe80 --- /dev/null +++ b/debuginfo-tests/dexter/dex/dextIR/LocIR.py @@ -0,0 +1,45 @@ +# DExTer : Debugging Experience Tester +# ~~~~~~ ~ ~~ ~ ~~ +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +import os + + +class LocIR: + """Data class which represents a source location.""" + + def __init__(self, path: str, lineno: int, column: int): + if path: + path = os.path.normcase(path) + self.path = path + self.lineno = lineno + self.column = column + + def __str__(self): + return '{}({}:{})'.format(self.path, self.lineno, self.column) + + def __eq__(self, rhs): + return (os.path.exists(self.path) and os.path.exists(rhs.path) + and os.path.samefile(self.path, rhs.path) + and self.lineno == rhs.lineno + and self.column == rhs.column) + + def __lt__(self, rhs): + if self.path != rhs.path: + return False + + if self.lineno == rhs.lineno: + return self.column < rhs.column + + return self.lineno < rhs.lineno + + def __gt__(self, rhs): + if self.path != rhs.path: + return False + + if self.lineno == rhs.lineno: + return self.column > rhs.column + + return self.lineno > rhs.lineno |