@@ -542,7 +542,7 @@ private static void generateCompositeDecoder(
542542 decoderName ,
543543 decoderTypeName );
544544
545-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , fieldToken .version ());
545+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , fieldToken .version ());
546546 indent (sb , level  + 2 , "return Either::Left(self);\n " );
547547 indent (sb , level  + 1 , "}\n \n " );
548548
@@ -576,7 +576,7 @@ private static void generateBitSetDecoder(
576576
577577 if  (bitsetToken .version () > 0 )
578578 {
579-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , bitsetToken .version ());
579+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , bitsetToken .version ());
580580 indent (sb , level  + 2 , "return %s::default();\n " , structTypeName );
581581 indent (sb , level  + 1 , "}\n \n " );
582582 }
@@ -636,8 +636,8 @@ private static void generatePrimitiveArrayDecoder(
636636
637637 if  (fieldToken .version () > 0 )
638638 {
639-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , fieldToken .version ());
640-  indent (sb , level  + 2 , "return [%s,  %d];\n " , encoding .applicableNullValue (), arrayLength );
639+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , fieldToken .version ());
640+  indent (sb , level  + 2 , "return [%s;  %d];\n " , encoding .applicableNullValue (), arrayLength );
641641 indent (sb , level  + 1 , "}\n \n " );
642642 }
643643
@@ -737,7 +737,7 @@ private static void generatePrimitiveOptionalDecoder(
737737
738738 if  (fieldToken .version () > 0 )
739739 {
740-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , fieldToken .version ());
740+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , fieldToken .version ());
741741 indent (sb , level  + 2 , "return None;\n " );
742742 indent (sb , level  + 1 , "}\n \n " );
743743 }
@@ -790,7 +790,7 @@ private static void generatePrimitiveRequiredDecoder(
790790
791791 if  (fieldToken .version () > 0 )
792792 {
793-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , fieldToken .version ());
793+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , fieldToken .version ());
794794 indent (sb , level  + 2 , "return %s;\n " ,
795795 generateRustLiteral (encoding .primitiveType (), encoding .applicableNullValue ().toString ()));
796796 indent (sb , level  + 1 , "}\n \n " );
@@ -939,7 +939,7 @@ static void generateDecoderVarData(
939939 {
940940 if  (varDataToken .version () > 0 )
941941 {
942-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , varDataToken .version ());
942+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , varDataToken .version ());
943943 indent (sb , level  + 2 , "return (self.parent.as_ref().unwrap().get_limit(), 0);\n " );
944944 indent (sb , level  + 1 , "}\n \n " );
945945 }
@@ -954,7 +954,7 @@ static void generateDecoderVarData(
954954 {
955955 if  (varDataToken .version () > 0 )
956956 {
957-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , varDataToken .version ());
957+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , varDataToken .version ());
958958 indent (sb , level  + 2 , "return (self.get_limit(), 0);\n " );
959959 indent (sb , level  + 1 , "}\n \n " );
960960 }
@@ -973,7 +973,7 @@ static void generateDecoderVarData(
973973
974974 if  (varDataToken .version () > 0 )
975975 {
976-  indent (sb , level  + 1 , "if self.acting_version < %d {\n " , varDataToken .version ());
976+  indent (sb , level  + 1 , "if self.acting_version > 0 && self.acting_version  < %d {\n " , varDataToken .version ());
977977 indent (sb , level  + 2 , "return &[] as &[u8];\n " );
978978 indent (sb , level  + 1 , "}\n \n " );
979979 }
@@ -1354,6 +1354,7 @@ private static void generateCompositeEncoder(
13541354 indent (out , 1 , "pub struct %s<P> {\n " , encoderName );
13551355 indent (out , 2 , "parent: Option<P>,\n " );
13561356 indent (out , 2 , "offset: usize,\n " );
1357+  indent (out , 2 , "acting_version: usize,\n " );
13571358 indent (out , 1 , "}\n \n " );
13581359
13591360 appendImplWriterForComposite (out , 1 , encoderName );
@@ -1413,6 +1414,7 @@ private static void generateCompositeDecoder(
14131414 indent (out , 1 , "pub struct %s<P> {\n " , decoderName );
14141415 indent (out , 2 , "parent: Option<P>,\n " );
14151416 indent (out , 2 , "offset: usize,\n " );
1417+  indent (out , 2 , "acting_version: usize,\n " );
14161418 indent (out , 1 , "}\n \n " );
14171419
14181420 appendImplReaderForComposite (out , 1 , decoderName );
0 commit comments