mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 11:46:07 +00:00

Fixes issue found on greendragon buildbot, in which an incorrectly indented statement following an if block led to entire frames being dropped instead of simply filtering unneeded watches. This reverts commit 1f44fa3ac17ceacc753019092bc50436c77ddcfa.
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
# 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
|
|
"""Base class for all DExTer commands, where a command is a specific Python
|
|
function that can be embedded into a comment in the source code under test
|
|
which will then be executed by DExTer during debugging.
|
|
"""
|
|
|
|
import abc
|
|
from collections import namedtuple
|
|
from typing import List
|
|
|
|
StepExpectInfo = namedtuple('StepExpectInfo', 'expression, path, frame_idx, line_range')
|
|
|
|
class CommandBase(object, metaclass=abc.ABCMeta):
|
|
def __init__(self):
|
|
self.path = None
|
|
self.lineno = None
|
|
self.raw_text = ''
|
|
|
|
def get_label_args(self):
|
|
return list()
|
|
|
|
def has_labels(self):
|
|
return False
|
|
|
|
@abc.abstractstaticmethod
|
|
def get_name():
|
|
"""This abstract method is usually implemented in subclasses as:
|
|
return __class__.__name__
|
|
"""
|
|
|
|
def get_watches(self) -> List[str]:
|
|
return []
|
|
|
|
@abc.abstractmethod
|
|
def eval(self):
|
|
"""Evaluate the command.
|
|
|
|
This will be called when constructing a Heuristic object to determine
|
|
the debug score.
|
|
|
|
Returns:
|
|
The logic for handling the result of CommandBase.eval() must be
|
|
defined in Heuristic.__init__() so a consitent return type between
|
|
commands is not enforced.
|
|
"""
|
|
|
|
@staticmethod
|
|
def get_subcommands() -> dict:
|
|
"""Returns a dictionary of subcommands in the form {name: command} or
|
|
None if no subcommands are required.
|
|
"""
|
|
return None
|