1- use std:: convert:: TryInto ;
2-
31use crate :: {
42 builtins:: { PyDict , PyDictRef , PyListRef , PyStrRef , PyTuple , PyTupleRef , PyType , PyTypeRef } ,
53 convert:: { IntoObject , TryFromObject } ,
@@ -108,17 +106,19 @@ fn get_filter(
108106
109107 /* WarningsState.filters could change while we are iterating over it. */
110108 for i in 0 ..filters. borrow_vec ( ) . len ( ) {
111- let tmp_item = filters. borrow_vec ( ) . get ( i) . cloned ( ) ;
112- let tmp_item = if let Some ( tmp_item) = tmp_item {
109+ let tmp_item = if let Some ( tmp_item) = filters. borrow_vec ( ) . get ( i) . cloned ( ) {
113110 let tmp_item = PyTupleRef :: try_from_object ( vm, tmp_item) ?;
114111 if tmp_item. len ( ) == 5 {
115- Ok ( tmp_item)
112+ Some ( tmp_item)
116113 } else {
117- Err ( vm . new_value_error ( format ! ( "_warnings.filters item {} isn't a 5-tuple" , i ) ) )
114+ None
118115 }
119116 } else {
120- Err ( vm. new_value_error ( format ! ( "_warnings.filters item {} isn't a 5-tuple" , i) ) )
121- } ?;
117+ None
118+ } ;
119+ let tmp_item = tmp_item. ok_or_else ( || {
120+ vm. new_value_error ( format ! ( "_warnings.filters item {} isn't a 5-tuple" , i) )
121+ } ) ?;
122122
123123 /* Python code: action, msg, cat, mod, ln = item */
124124 let action = if let Some ( action) = tmp_item. get ( 0 ) {
@@ -145,16 +145,9 @@ fn get_filter(
145145 false
146146 } ;
147147
148- let ln = tmp_item. get ( 4 ) . map_or_else (
149- || 0 ,
150- |ln_obj| {
151- if let Ok ( ln) = ln_obj. try_int ( vm) {
152- ln. as_u32_mask ( ) as usize
153- } else {
154- 0
155- }
156- } ,
157- ) ;
148+ let ln = tmp_item. get ( 4 ) . map_or ( 0 , |ln_obj| {
149+ ln_obj. try_int ( vm) . map_or ( 0 , |ln| ln. as_u32_mask ( ) as _ )
150+ } ) ;
158151
159152 if good_msg && good_mod && is_subclass && ( ln == 0 || lineno == ln) {
160153 _item = tmp_item;
@@ -185,38 +178,35 @@ fn already_warned(
185178 }
186179 _ => {
187180 let registry = registry. dict ( ) ;
188- registry. as_ref ( ) . map ( |registry| {
181+ if let Some ( registry) = registry . as_ref ( ) {
189182 registry. clear ( ) ;
190- registry
191- } ) ;
192-
193- if let Some ( registry) = registry {
194- if registry. set_item ( "version" , filters_version, vm) . is_err ( ) {
183+ let r = registry. set_item ( "version" , filters_version, vm) ;
184+ if r. is_err ( ) {
195185 return Ok ( false ) ;
196186 }
197187 }
198188 }
199189 }
200190
201191 /* This warning wasn't found in the registry, set it. */
202- Ok ( if should_set {
203- let item = vm. ctx . true_value . clone ( ) . into ( ) ;
204- registry. set_item ( key. as_ref ( ) , item, vm) . map ( |_| true ) ?
205- } else {
206- false
207- } )
192+ if !should_set {
193+ return Ok ( false ) ;
194+ }
195+
196+ let item = vm. ctx . true_value . clone ( ) . into ( ) ;
197+ let _ = registry. set_item ( key. as_ref ( ) , item, vm) ; // ignore set error
198+ Ok ( true )
208199}
209200
210201fn normalize_module ( filename : PyStrRef , vm : & VirtualMachine ) -> Option < PyObjectRef > {
211- let len = filename. char_len ( ) ;
212-
213- if len == 0 {
214- Some ( vm. new_pyobj ( "<unknown>" ) )
215- } else if len >= 3 && filename. as_str ( ) . ends_with ( ".py" ) {
216- Some ( vm. new_pyobj ( & filename. as_str ( ) [ ..len - 3 ] ) )
217- } else {
218- Some ( filename. as_object ( ) . to_owned ( ) )
219- }
202+ let obj = match filename. char_len ( ) {
203+ 0 => vm. new_pyobj ( "<unknown>" ) ,
204+ len if len >= 3 && filename. as_str ( ) . ends_with ( ".py" ) => {
205+ vm. new_pyobj ( & filename. as_str ( ) [ ..len - 3 ] )
206+ }
207+ _ => filename. as_object ( ) . to_owned ( ) ,
208+ } ;
209+ Some ( obj)
220210}
221211
222212#[ allow( clippy:: too_many_arguments) ]
0 commit comments