| # 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 |
| |
| |
| class ValueIR: |
| """Data class to store the result of an expression evaluation.""" |
| |
| def __init__( |
| self, |
| expression: str, |
| value: str, |
| type_name: str, |
| could_evaluate: bool, |
| error_string: str = None, |
| is_optimized_away: bool = False, |
| is_irretrievable: bool = False, |
| ): |
| self.expression = expression |
| self.value = value |
| self.type_name = type_name |
| self.could_evaluate = could_evaluate |
| self.error_string = error_string |
| self.is_optimized_away = is_optimized_away |
| self.is_irretrievable = is_irretrievable |
| |
| def __str__(self): |
| prefix = '"{}": '.format(self.expression) |
| if self.error_string is not None: |
| return prefix + self.error_string |
| if self.value is not None: |
| return prefix + "({}) {}".format(self.type_name, self.value) |
| return ( |
| prefix |
| + "could_evaluate: {}; irretrievable: {}; optimized_away: {};".format( |
| self.could_evaluate, self.is_irretrievable, self.is_optimized_away |
| ) |
| ) |