xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py (revision 45a40c163932d12b72b33bd1d8a84519392b5d39)
11364750dSJames Henderson# DExTer : Debugging Experience Tester
21364750dSJames Henderson# ~~~~~~   ~         ~~         ~   ~~
31364750dSJames Henderson#
41364750dSJames Henderson# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
51364750dSJames Henderson# See https://llvm.org/LICENSE.txt for license information.
61364750dSJames Henderson# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
71364750dSJames Henderson"""Command used to give a line in a test a named psuedonym. Every DexLabel has
81364750dSJames Henderson   a line number and Label string component.
91364750dSJames Henderson"""
101364750dSJames Henderson
111364750dSJames Hendersonfrom dex.command.CommandBase import CommandBase
121364750dSJames Henderson
131364750dSJames Henderson
141364750dSJames Hendersonclass DexLabel(CommandBase):
151364750dSJames Henderson    def __init__(self, label, **kwargs):
161364750dSJames Henderson        if not isinstance(label, str):
17*f98ee40fSTobias Hieta            raise TypeError("invalid argument type")
181364750dSJames Henderson
191364750dSJames Henderson        try:
20*f98ee40fSTobias Hieta            self.on_line = kwargs.pop("on_line")
211364750dSJames Henderson        except KeyError:
221364750dSJames Henderson            # We cannot use self.lineno because it hasn't been set yet.
231364750dSJames Henderson            pass
241364750dSJames Henderson        if kwargs:
251364750dSJames Henderson            raise TypeError(f'unexpected named args: {", ".join(kwargs)}')
261364750dSJames Henderson
271364750dSJames Henderson        self._label = label
281364750dSJames Henderson        super(DexLabel, self).__init__()
291364750dSJames Henderson
301364750dSJames Henderson    def get_line(self):
31*f98ee40fSTobias Hieta        return getattr(self, "on_line", self.lineno)
321364750dSJames Henderson
331364750dSJames Henderson    def get_as_pair(self):
341364750dSJames Henderson        return (self._label, self.get_line())
351364750dSJames Henderson
361364750dSJames Henderson    @staticmethod
371364750dSJames Henderson    def get_name():
381364750dSJames Henderson        return __class__.__name__
391364750dSJames Henderson
401364750dSJames Henderson    def eval(self):
411364750dSJames Henderson        return self._label
42