| # 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 |
| """Command used to give a line in a test a named psuedonym. Every DexLabel has |
| a line number and Label string component. |
| """ |
| |
| from dex.command.CommandBase import CommandBase |
| |
| |
| class DexLabel(CommandBase): |
| def __init__(self, label, **kwargs): |
| |
| if not isinstance(label, str): |
| raise TypeError('invalid argument type') |
| |
| try: |
| self.on_line = kwargs.pop('on_line') |
| except KeyError: |
| # We cannot use self.lineno because it hasn't been set yet. |
| pass |
| if kwargs: |
| raise TypeError(f'unexpected named args: {", ".join(kwargs)}') |
| |
| self._label = label |
| super(DexLabel, self).__init__() |
| |
| def get_line(self): |
| return getattr(self, 'on_line', self.lineno) |
| |
| def get_as_pair(self): |
| return (self._label, self.get_line()) |
| |
| @staticmethod |
| def get_name(): |
| return __class__.__name__ |
| |
| def eval(self): |
| return self._label |