@@ -69,6 +69,7 @@ use errors::DiagnosticBuilder;
69
69
70
70
use std:: cell:: { Cell , RefCell } ;
71
71
use std:: cmp;
72
+ use std:: collections:: BTreeSet ;
72
73
use std:: fmt;
73
74
use std:: mem:: replace;
74
75
use std:: rc:: Rc ;
@@ -100,8 +101,8 @@ enum AssocSuggestion {
100
101
#[ derive( Eq ) ]
101
102
struct BindingError {
102
103
name : Name ,
103
- origin : FxHashSet < Span > ,
104
- target : FxHashSet < Span > ,
104
+ origin : BTreeSet < Span > ,
105
+ target : BTreeSet < Span > ,
105
106
}
106
107
107
108
impl PartialOrd for BindingError {
@@ -233,16 +234,14 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
233
234
err
234
235
}
235
236
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 < _ > > ( ) ;
238
238
let msp = MultiSpan :: from_spans ( target_sp. clone ( ) ) ;
239
239
let msg = format ! ( "variable `{}` is not bound in all patterns" , binding_error. name) ;
240
240
let mut err = resolver. session . struct_span_err_with_code ( msp, & msg, "E0408" ) ;
241
241
for sp in target_sp {
242
242
err. span_label ( sp, & format ! ( "pattern doesn't bind `{}`" , binding_error. name) ) ;
243
243
}
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 < _ > > ( ) ;
246
245
for sp in origin_sp {
247
246
err. span_label ( sp, & "variable not in all patterns" ) ;
248
247
}
@@ -1950,8 +1949,8 @@ impl<'a> Resolver<'a> {
1950
1949
. entry ( key. name )
1951
1950
. or_insert ( BindingError {
1952
1951
name : key. name ,
1953
- origin : FxHashSet ( ) ,
1954
- target : FxHashSet ( ) ,
1952
+ origin : BTreeSet :: new ( ) ,
1953
+ target : BTreeSet :: new ( ) ,
1955
1954
} ) ;
1956
1955
binding_error. origin . insert ( binding_i. span ) ;
1957
1956
binding_error. target . insert ( q. span ) ;
@@ -1963,8 +1962,8 @@ impl<'a> Resolver<'a> {
1963
1962
. entry ( key_j. name )
1964
1963
. or_insert ( BindingError {
1965
1964
name : key_j. name ,
1966
- origin : FxHashSet ( ) ,
1967
- target : FxHashSet ( ) ,
1965
+ origin : BTreeSet :: new ( ) ,
1966
+ target : BTreeSet :: new ( ) ,
1968
1967
} ) ;
1969
1968
binding_error. origin . insert ( binding_j. span ) ;
1970
1969
binding_error. target . insert ( p. span ) ;
0 commit comments