mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2024-11-26 21:30:42 +00:00
Make libc++ gdb pretty printer Python 3 compatible
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@373691 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0d7477f78f
commit
2b539adf22
@ -17,6 +17,7 @@ See gdb_pretty_printer_test.sh.cpp on how to write a test case.
|
||||
from __future__ import print_function
|
||||
import re
|
||||
import gdb
|
||||
import sys
|
||||
|
||||
test_failures = 0
|
||||
|
||||
@ -57,9 +58,9 @@ class CheckResult(gdb.Command):
|
||||
print("FAIL: " + test_loc.symtab.filename +
|
||||
":" + str(test_loc.line))
|
||||
print("GDB printed:")
|
||||
print(" " + value)
|
||||
print(" " + repr(value))
|
||||
print("Value should match:")
|
||||
print(" " + check_literal)
|
||||
print(" " + repr(check_literal))
|
||||
test_failures += 1
|
||||
else:
|
||||
print("PASS: " + test_loc.symtab.filename +
|
||||
@ -76,11 +77,15 @@ class CheckResult(gdb.Command):
|
||||
def _get_value_string(self, compare_frame, testcase_frame):
|
||||
compare_frame.select()
|
||||
if "ComparePrettyPrint" in compare_frame.name():
|
||||
return gdb.execute("p value", to_string=True)
|
||||
value_str = str(compare_frame.read_var("value"))
|
||||
clean_expression_str = value_str.strip("'\"")
|
||||
testcase_frame.select()
|
||||
return gdb.execute("p " + clean_expression_str, to_string=True)
|
||||
s = gdb.execute("p value", to_string=True)
|
||||
else:
|
||||
value_str = str(compare_frame.read_var("value"))
|
||||
clean_expression_str = value_str.strip("'\"")
|
||||
testcase_frame.select()
|
||||
s = gdb.execute("p " + clean_expression_str, to_string=True)
|
||||
if sys.version_info.major == 2:
|
||||
return s.decode("utf-8")
|
||||
return s
|
||||
|
||||
|
||||
def exit_handler(event=None):
|
||||
|
@ -137,13 +137,17 @@ class StdTuplePrinter(object):
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def next(self):
|
||||
def __next__(self):
|
||||
# child_iter raises StopIteration when appropriate.
|
||||
field_name = self.child_iter.next()
|
||||
child = self.val["__base_"][field_name]["__value_"]
|
||||
self.count += 1
|
||||
return ("[%d]" % self.count, child)
|
||||
|
||||
# TODO Delete when we drop Python 2.
|
||||
def next(self):
|
||||
return self.__next__()
|
||||
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
||||
@ -311,7 +315,7 @@ class StdVectorPrinter(object):
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def next(self):
|
||||
def __next__(self):
|
||||
"""Retrieve the next element."""
|
||||
|
||||
self.count += 1
|
||||
@ -328,6 +332,10 @@ class StdVectorPrinter(object):
|
||||
self.offset = 0
|
||||
return ("[%d]" % self.count, outbit)
|
||||
|
||||
# TODO Delete when we drop Python 2.
|
||||
def next(self):
|
||||
return self.__next__()
|
||||
|
||||
class _VectorIterator(object):
|
||||
"""Class to iterate over the non-bool vector's children."""
|
||||
|
||||
@ -339,7 +347,7 @@ class StdVectorPrinter(object):
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def next(self):
|
||||
def __next__(self):
|
||||
self.count += 1
|
||||
if self.item == self.end:
|
||||
raise StopIteration
|
||||
@ -347,6 +355,10 @@ class StdVectorPrinter(object):
|
||||
self.item += 1
|
||||
return ("[%d]" % self.count, entry)
|
||||
|
||||
# TODO Delete when we drop Python 2.
|
||||
def next(self):
|
||||
return self.__next__()
|
||||
|
||||
def __init__(self, val):
|
||||
"""Set val, length, capacity, and iterator for bool and normal vectors."""
|
||||
self.val = val
|
||||
|
Loading…
Reference in New Issue
Block a user