@@ -319,11 +319,24 @@ impl Evaluated {
319319 ) {
320320 self . value = EvaluatedValue :: Unknown ;
321321 if is_4state {
322- self . r#type = EvaluatedType :: Logic ( EvaluatedTypeLogic {
323- signed,
324- width,
325- array,
326- } ) ;
322+ let new_type = match & self . r#type {
323+ EvaluatedType :: Clock ( x) => EvaluatedType :: Clock ( EvaluatedTypeClock {
324+ kind : x. kind ,
325+ width,
326+ array,
327+ } ) ,
328+ EvaluatedType :: Reset ( x) => EvaluatedType :: Reset ( EvaluatedTypeReset {
329+ kind : x. kind ,
330+ width,
331+ array,
332+ } ) ,
333+ _ => EvaluatedType :: Logic ( EvaluatedTypeLogic {
334+ signed,
335+ width,
336+ array,
337+ } ) ,
338+ } ;
339+ self . r#type = new_type;
327340 } else {
328341 self . r#type = EvaluatedType :: Bit ( EvaluatedTypeBit {
329342 signed,
@@ -547,25 +560,24 @@ impl Evaluated {
547560
548561 let is_4state = left. is_4state ( ) ;
549562
550- let mut ret = match ( left. get_value ( ) , left. get_total_width ( ) ) {
563+ match ( left. get_value ( ) , left. get_total_width ( ) ) {
551564 ( Some ( value0) , Some ( width0) ) => {
552565 let value = calc_value ( value0) ;
553566 let width = calc_width ( width0) ;
554567 if let Some ( value) = value {
555- Evaluated :: create_fixed ( value, false , vec ! [ width] , vec ! [ ] )
568+ left . set_fixed ( value, false , vec ! [ width] , vec ! [ ] ) ;
556569 } else {
557- Evaluated :: create_variable ( false , is_4state, vec ! [ width] , vec ! [ ] )
570+ left . set_variable ( false , is_4state, vec ! [ width] , vec ! [ ] ) ;
558571 }
559572 }
560573 ( _, Some ( width0) ) => {
561574 let width = calc_width ( width0) ;
562- Evaluated :: create_variable ( false , is_4state, vec ! [ width] , vec ! [ ] )
575+ left . set_variable ( false , is_4state, vec ! [ width] , vec ! [ ] ) ;
563576 }
564- _ => Evaluated :: create_unknown ( ) ,
565- } ;
577+ _ => left . set_unknown ( ) ,
578+ }
566579
567- ret. errors . append ( & mut left. errors ) ;
568- ret
580+ left
569581 }
570582
571583 fn pow ( self , exp : Evaluated , context_width : Option < & usize > ) -> Evaluated {
0 commit comments