@@ -652,6 +652,21 @@ def get_type_name(self) -> str:
652652        return  name 
653653
654654
655+ def  StructSummaryProvider (valobj : SBValue , _dict : LLDBOpaque ) ->  str :
656+     output  =  []
657+     for  i  in  range (valobj .GetNumChildren ()):
658+         child : SBValue  =  valobj .GetChildAtIndex (i )
659+         summary  =  child .summary 
660+         if  summary  is  None :
661+             summary  =  child .value 
662+             if  summary  is  None :
663+                 summary  =  StructSummaryProvider (child , _dict )
664+         summary  =  child .GetName () +  ":"  +  summary 
665+         output .append (summary )
666+ 
667+     return  "{"  +  ", " .join (output ) +  "}" 
668+ 
669+ 
655670def  MSVCEnumSummaryProvider (valobj : SBValue , _dict : LLDBOpaque ) ->  str :
656671    enum_synth  =  MSVCEnumSyntheticProvider (valobj .GetNonSyntheticValue (), _dict )
657672    variant_names : SBType  =  valobj .target .FindFirstType (
@@ -695,16 +710,7 @@ def MSVCEnumSummaryProvider(valobj: SBValue, _dict: LLDBOpaque) -> str:
695710        return  name  +  TupleSummaryProvider (enum_synth .value , _dict )
696711    else :
697712        # enum variant is a regular struct 
698-         var_list  =  (
699-             str (enum_synth .value .GetNonSyntheticValue ()).split ("= " , 1 )[1 ].splitlines ()
700-         )
701-         vars  =  [x .strip () for  x  in  var_list  if  x  not  in "{" , "}" )]
702-         if  vars [0 ][0 ] ==  "(" :
703-             vars [0 ] =  vars [0 ][1 :]
704-         if  vars [- 1 ][- 1 ] ==  ")" :
705-             vars [- 1 ] =  vars [- 1 ][:- 1 ]
706- 
707-         return  f"{ name } { ', ' .join (vars )}  
713+         return  name  +  StructSummaryProvider (enum_synth .value , _dict )
708714
709715
710716class  TupleSyntheticProvider :
0 commit comments