mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Use BTreeSet
instead of FxHashSet
This commit is contained in:
parent
75eface16d
commit
3ffa4b5240
@ -69,6 +69,7 @@ use errors::DiagnosticBuilder;
|
|||||||
|
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
|
use std::collections::BTreeSet;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::mem::replace;
|
use std::mem::replace;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
@ -100,8 +101,8 @@ enum AssocSuggestion {
|
|||||||
#[derive(Eq)]
|
#[derive(Eq)]
|
||||||
struct BindingError {
|
struct BindingError {
|
||||||
name: Name,
|
name: Name,
|
||||||
origin: FxHashSet<Span>,
|
origin: BTreeSet<Span>,
|
||||||
target: FxHashSet<Span>,
|
target: BTreeSet<Span>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PartialOrd for BindingError {
|
impl PartialOrd for BindingError {
|
||||||
@ -233,16 +234,14 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
|
|||||||
err
|
err
|
||||||
}
|
}
|
||||||
ResolutionError::VariableNotBoundInPattern(binding_error) => {
|
ResolutionError::VariableNotBoundInPattern(binding_error) => {
|
||||||
let mut target_sp = binding_error.target.iter().map(|x| *x).collect::<Vec<_>>();
|
let target_sp = binding_error.target.iter().map(|x| *x).collect::<Vec<_>>();
|
||||||
target_sp.sort();
|
|
||||||
let msp = MultiSpan::from_spans(target_sp.clone());
|
let msp = MultiSpan::from_spans(target_sp.clone());
|
||||||
let msg = format!("variable `{}` is not bound in all patterns", binding_error.name);
|
let msg = format!("variable `{}` is not bound in all patterns", binding_error.name);
|
||||||
let mut err = resolver.session.struct_span_err_with_code(msp, &msg, "E0408");
|
let mut err = resolver.session.struct_span_err_with_code(msp, &msg, "E0408");
|
||||||
for sp in target_sp {
|
for sp in target_sp {
|
||||||
err.span_label(sp, &format!("pattern doesn't bind `{}`", binding_error.name));
|
err.span_label(sp, &format!("pattern doesn't bind `{}`", binding_error.name));
|
||||||
}
|
}
|
||||||
let mut origin_sp = binding_error.origin.iter().map(|x| *x).collect::<Vec<_>>();
|
let origin_sp = binding_error.origin.iter().map(|x| *x).collect::<Vec<_>>();
|
||||||
origin_sp.sort();
|
|
||||||
for sp in origin_sp {
|
for sp in origin_sp {
|
||||||
err.span_label(sp, &"variable not in all patterns");
|
err.span_label(sp, &"variable not in all patterns");
|
||||||
}
|
}
|
||||||
@ -1950,8 +1949,8 @@ impl<'a> Resolver<'a> {
|
|||||||
.entry(key.name)
|
.entry(key.name)
|
||||||
.or_insert(BindingError {
|
.or_insert(BindingError {
|
||||||
name: key.name,
|
name: key.name,
|
||||||
origin: FxHashSet(),
|
origin: BTreeSet::new(),
|
||||||
target: FxHashSet(),
|
target: BTreeSet::new(),
|
||||||
});
|
});
|
||||||
binding_error.origin.insert(binding_i.span);
|
binding_error.origin.insert(binding_i.span);
|
||||||
binding_error.target.insert(q.span);
|
binding_error.target.insert(q.span);
|
||||||
@ -1963,8 +1962,8 @@ impl<'a> Resolver<'a> {
|
|||||||
.entry(key_j.name)
|
.entry(key_j.name)
|
||||||
.or_insert(BindingError {
|
.or_insert(BindingError {
|
||||||
name: key_j.name,
|
name: key_j.name,
|
||||||
origin: FxHashSet(),
|
origin: BTreeSet::new(),
|
||||||
target: FxHashSet(),
|
target: BTreeSet::new(),
|
||||||
});
|
});
|
||||||
binding_error.origin.insert(binding_j.span);
|
binding_error.origin.insert(binding_j.span);
|
||||||
binding_error.target.insert(p.span);
|
binding_error.target.insert(p.span);
|
||||||
|
Loading…
Reference in New Issue
Block a user