@@ -88,17 +88,15 @@ impl EnumeratedValueBuilder {
8888 }
8989 /// Validate and build a [`EnumeratedValue`].
9090 pub fn build ( self , lvl : ValidateLevel ) -> Result < EnumeratedValue , SvdError > {
91- let mut ev = EnumeratedValue {
91+ let ev = EnumeratedValue {
9292 name : self
9393 . name
9494 . ok_or_else ( || BuildError :: Uninitialized ( "name" . to_string ( ) ) ) ?,
9595 description : self . description . empty_to_none ( ) ,
9696 value : self . value ,
9797 is_default : self . is_default ,
9898 } ;
99- if !lvl. is_disabled ( ) {
100- ev. validate ( lvl) ?;
101- }
99+ ev. validate ( lvl) ?;
102100 Ok ( ev)
103101 }
104102}
@@ -130,23 +128,23 @@ impl EnumeratedValue {
130128 if builder. is_default . is_some ( ) {
131129 self . is_default = builder. is_default ;
132130 }
131+ self . validate ( lvl)
132+ }
133+ /// Validate the [`EnumeratedValue`].
134+ pub fn validate ( & self , lvl : ValidateLevel ) -> Result < ( ) , SvdError > {
133135 if !lvl. is_disabled ( ) {
134- self . validate ( lvl)
136+ if lvl. is_strict ( ) {
137+ super :: check_name ( & self . name , "name" ) ?;
138+ }
139+ match ( self . value . is_some ( ) , self . is_default ( ) ) {
140+ ( false , false ) => Err ( Error :: AbsentValue . into ( ) ) ,
141+ ( true , true ) if lvl. is_strict ( ) => Err ( Error :: ValueAndDefault ( self . value ) . into ( ) ) ,
142+ _ => Ok ( ( ) ) ,
143+ }
135144 } else {
136145 Ok ( ( ) )
137146 }
138147 }
139- /// Validate the [`EnumeratedValue`].
140- pub fn validate ( & mut self , lvl : ValidateLevel ) -> Result < ( ) , SvdError > {
141- if lvl. is_strict ( ) {
142- super :: check_name ( & self . name , "name" ) ?;
143- }
144- match ( self . value . is_some ( ) , self . is_default ( ) ) {
145- ( false , false ) => Err ( Error :: AbsentValue . into ( ) ) ,
146- ( true , true ) if lvl. is_strict ( ) => Err ( Error :: ValueAndDefault ( self . value ) . into ( ) ) ,
147- _ => Ok ( ( ) ) ,
148- }
149- }
150148 pub ( crate ) fn check_range ( & self , range : & core:: ops:: Range < u64 > ) -> Result < ( ) , SvdError > {
151149 match & self . value {
152150 Some ( x) if !range. contains ( x) => Err ( Error :: OutOfRange ( * x, range. clone ( ) ) . into ( ) ) ,
0 commit comments