@@ -69,6 +69,7 @@ use errors::DiagnosticBuilder;
6969
7070use std:: cell:: { Cell , RefCell } ;
7171use std:: cmp;
72+ use std:: collections:: BTreeSet ;
7273use std:: fmt;
7374use std:: mem:: replace;
7475use std:: rc:: Rc ;
@@ -100,8 +101,8 @@ enum AssocSuggestion {
100101#[ derive( Eq ) ]
101102struct BindingError {
102103 name : Name ,
103- origin : FxHashSet < Span > ,
104- target : FxHashSet < Span > ,
104+ origin : BTreeSet < Span > ,
105+ target : BTreeSet < Span > ,
105106}
106107
107108impl PartialOrd for BindingError {
@@ -233,16 +234,14 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
233234 err
234235 }
235236 ResolutionError :: VariableNotBoundInPattern ( binding_error) => {
236- let mut target_sp = binding_error. target . iter ( ) . map ( |x| * x) . collect :: < Vec < _ > > ( ) ;
237- target_sp. sort ( ) ;
237+ let target_sp = binding_error. target . iter ( ) . map ( |x| * x) . collect :: < Vec < _ > > ( ) ;
238238 let msp = MultiSpan :: from_spans ( target_sp. clone ( ) ) ;
239239 let msg = format ! ( "variable `{}` is not bound in all patterns" , binding_error. name) ;
240240 let mut err = resolver. session . struct_span_err_with_code ( msp, & msg, "E0408" ) ;
241241 for sp in target_sp {
242242 err. span_label ( sp, & format ! ( "pattern doesn't bind `{}`" , binding_error. name) ) ;
243243 }
244- let mut origin_sp = binding_error. origin . iter ( ) . map ( |x| * x) . collect :: < Vec < _ > > ( ) ;
245- origin_sp. sort ( ) ;
244+ let origin_sp = binding_error. origin . iter ( ) . map ( |x| * x) . collect :: < Vec < _ > > ( ) ;
246245 for sp in origin_sp {
247246 err. span_label ( sp, & "variable not in all patterns" ) ;
248247 }
@@ -1950,8 +1949,8 @@ impl<'a> Resolver<'a> {
19501949 . entry ( key. name )
19511950 . or_insert ( BindingError {
19521951 name : key. name ,
1953- origin : FxHashSet ( ) ,
1954- target : FxHashSet ( ) ,
1952+ origin : BTreeSet :: new ( ) ,
1953+ target : BTreeSet :: new ( ) ,
19551954 } ) ;
19561955 binding_error. origin . insert ( binding_i. span ) ;
19571956 binding_error. target . insert ( q. span ) ;
@@ -1963,8 +1962,8 @@ impl<'a> Resolver<'a> {
19631962 . entry ( key_j. name )
19641963 . or_insert ( BindingError {
19651964 name : key_j. name ,
1966- origin : FxHashSet ( ) ,
1967- target : FxHashSet ( ) ,
1965+ origin : BTreeSet :: new ( ) ,
1966+ target : BTreeSet :: new ( ) ,
19681967 } ) ;
19691968 binding_error. origin . insert ( binding_j. span ) ;
19701969 binding_error. target . insert ( p. span ) ;
0 commit comments