diff options
| author | bors <bors@rust-lang.org> | 2014-11-23 20:26:58 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-11-23 20:26:58 +0000 |
| commit | 4e5259503cd8aac9905c7ac6d68d0c4caab1d28c (patch) | |
| tree | 9d93d055fa5aa82480c4b5771aba4cca5efdfc9b /src/etc | |
| parent | 220b99b148559e8996a1dbd279e8ca190bf94b2e (diff) | |
| parent | d6b023a46750d6c2df919908bd0f1460d3d9c8a6 (diff) | |
| download | rust-4e5259503cd8aac9905c7ac6d68d0c4caab1d28c.tar.gz rust-4e5259503cd8aac9905c7ac6d68d0c4caab1d28c.zip | |
auto merge of #19242 : jakub-/rust/roll-up, r=jakub-
Diffstat (limited to 'src/etc')
| -rw-r--r-- | src/etc/lldb_rust_formatters.py | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/src/etc/lldb_rust_formatters.py b/src/etc/lldb_rust_formatters.py index ca895414635..642235ed4e3 100644 --- a/src/etc/lldb_rust_formatters.py +++ b/src/etc/lldb_rust_formatters.py @@ -43,8 +43,6 @@ def print_struct_val(val, internal_dict): return print_struct_val_starting_from(0, val, internal_dict) def print_vec_slice_val(val, internal_dict): - output = "&[" - length = val.GetChildAtIndex(1).GetValueAsUnsigned() data_ptr_val = val.GetChildAtIndex(0) @@ -56,16 +54,12 @@ def print_vec_slice_val(val, internal_dict): start_address = data_ptr_val.GetValueAsUnsigned() - for i in range(length): + def render_element(i): address = start_address + i * element_type_size - element_val = val.CreateValueFromAddress( val.GetName() + ("[%s]" % i), address, element_type ) - output += print_val(element_val, internal_dict) - - if i != length - 1: - output += ", " + element_val = val.CreateValueFromAddress( val.GetName() + ("[%s]" % i), address, element_type) + return print_val(element_val, internal_dict) - output += "]" - return output + return "&[%s]" % (', '.join([render_element(i) for i in range(length)])) def print_struct_val_starting_from(field_start_index, val, internal_dict): ''' @@ -77,39 +71,33 @@ def print_struct_val_starting_from(field_start_index, val, internal_dict): t = val.GetType() has_field_names = type_has_field_names(t) type_name = extract_type_name(t.GetName()) - output = "" - - if not type_name.startswith("("): - # this is a tuple, so don't print the type name - output += type_name if has_field_names: - output += " { \n" + template = "%(type_name)s {\n%(body)s\n}" + separator = ", \n" else: - output += "(" + template = "%(type_name)s(%(body)s)" + separator = ", " + + if type_name.startswith("("): + # this is a tuple, so don't print the type name + type_name = "" num_children = val.num_children - for child_index in range(field_start_index, num_children): + def render_child(child_index): + this = "" if has_field_names: field_name = t.GetFieldAtIndex(child_index).GetName() - output += field_name + ": " + this += field_name + ": " field_val = val.GetChildAtIndex(child_index) - output += print_val(field_val, internal_dict) + return this + print_val(field_val, internal_dict) - if child_index != num_children - 1: - output += ", " - - if has_field_names: - output += "\n" - - if has_field_names: - output += "}" - else: - output += ")" + body = separator.join([render_child(idx) for idx in range(field_start_index, num_children)]) - return output + return template % {"type_name": type_name, + "body": body} def print_enum_val(val, internal_dict): @@ -243,3 +231,5 @@ def is_vec_slice(val): type_name = extract_type_name(ty.GetName()).replace("&'static", "&").replace(" ", "") return type_name.startswith("&[") and type_name.endswith("]") + +# vi: sw=2:ts=2 |
