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