@@ -456,6 +456,8 @@ def has_children(self) -> bool:
456
456
457
457
458
458
class StdSliceSyntheticProvider :
459
+ __slots__ = ["valobj" , "length" , "ptr" , "element_type" , "element_size" ]
460
+
459
461
def __init__ (self , valobj : SBValue , _dict : LLDBOpaque ):
460
462
self .valobj = valobj
461
463
self .update ()
@@ -472,7 +474,7 @@ def get_child_index(self, name: str) -> int:
472
474
473
475
def get_child_at_index (self , index : int ) -> SBValue :
474
476
start = self .data_ptr .GetValueAsUnsigned ()
475
- address = start + index * self .element_type_size
477
+ address = start + index * self .element_size
476
478
element = self .data_ptr .CreateValueFromAddress (
477
479
"[%s]" % index , address , self .element_type
478
480
)
@@ -483,12 +485,33 @@ def update(self):
483
485
self .data_ptr = self .valobj .GetChildMemberWithName ("data_ptr" )
484
486
485
487
self .element_type = self .data_ptr .GetType ().GetPointeeType ()
486
- self .element_type_size = self .element_type .GetByteSize ()
488
+ self .element_size = self .element_type .GetByteSize ()
487
489
488
490
def has_children (self ) -> bool :
489
491
return True
490
492
491
493
494
+ class MSVCStdSliceSyntheticProvider (StdSliceSyntheticProvider ):
495
+ def get_type_name (self ) -> str :
496
+ name = self .valobj .GetTypeName ()
497
+
498
+ if name .startswith ("ref_mut" ):
499
+ # remove "ref_mut$<slice2$<" and trailing "> >"
500
+ name = name [17 :- 3 ]
501
+ ref = "&mut "
502
+ else :
503
+ # remove "ref$<slice2$<" and trailing "> >"
504
+ name = name [13 :- 3 ]
505
+ ref = "&"
506
+
507
+ return "" .join ([ref , "[" , name , "]" ])
508
+
509
+ def StdSliceSummaryProvider (valobj , dict ):
510
+ output = sequence_formatter ("[" , valobj , dict )
511
+ output += "]"
512
+ return output
513
+
514
+
492
515
class StdVecDequeSyntheticProvider :
493
516
"""Pretty-printer for alloc::collections::vec_deque::VecDeque<T>
494
517
0 commit comments