@@ -185,16 +185,17 @@ impl CodeSuggestion {
185185 !invalid
186186 } )
187187 . cloned ( )
188- . map ( |mut substitution| {
188+ . filter_map ( |mut substitution| {
189189 // Assumption: all spans are in the same file, and all spans
190190 // are disjoint. Sort in ascending order.
191191 substitution. parts . sort_by_key ( |part| part. span . lo ( ) ) ;
192192
193193 // Find the bounding span.
194- let lo = substitution. parts . iter ( ) . map ( |part| part. span . lo ( ) ) . min ( ) . unwrap ( ) ;
195- let hi = substitution. parts . iter ( ) . map ( |part| part. span . hi ( ) ) . max ( ) . unwrap ( ) ;
194+ let lo = substitution. parts . iter ( ) . map ( |part| part. span . lo ( ) ) . min ( ) ? ;
195+ let hi = substitution. parts . iter ( ) . map ( |part| part. span . hi ( ) ) . max ( ) ? ;
196196 let bounding_span = Span :: with_root_ctxt ( lo, hi) ;
197- let lines = cm. span_to_lines ( bounding_span) . unwrap ( ) ;
197+ // The different spans might belong to different contexts, if so ignore suggestion.
198+ let lines = cm. span_to_lines ( bounding_span) . ok ( ) ?;
198199 assert ! ( !lines. lines. is_empty( ) ) ;
199200
200201 // To build up the result, we do this for each span:
@@ -244,7 +245,7 @@ impl CodeSuggestion {
244245 while buf. ends_with ( '\n' ) {
245246 buf. pop ( ) ;
246247 }
247- ( buf, substitution. parts , only_capitalization)
248+ Some ( ( buf, substitution. parts , only_capitalization) )
248249 } )
249250 . collect ( )
250251 }
0 commit comments