Skip to content

Commit 169b040

Browse files
committed
review comments
1 parent 35a3b58 commit 169b040

File tree

3 files changed

+27
-18
lines changed

3 files changed

+27
-18
lines changed

src/librustc/hir/mod.rs

+7
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,13 @@ impl Mutability {
10531053
MutImmutable => MutImmutable,
10541054
}
10551055
}
1056+
1057+
pub fn not(self) -> Self {
1058+
match self {
1059+
MutMutable => MutImmutable,
1060+
MutImmutable => MutMutable,
1061+
}
1062+
}
10561063
}
10571064

10581065
#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Hash, HashStable)]

src/librustc_typeck/check/method/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
215215

216216
let mut needs_mut = false;
217217
if let ty::Ref(region, t_type, mutability) = self_ty.kind {
218-
let trait_type = match mutability {
219-
hir::Mutability::MutMutable => self.tcx.mk_imm_ref(region, t_type),
220-
hir::Mutability::MutImmutable => self.tcx.mk_mut_ref(region, t_type),
221-
};
218+
let trait_type = self.tcx.mk_ref(region, ty::TypeAndMut {
219+
ty: t_type,
220+
mutbl: mutability.not(),
221+
});
222222
match self.lookup_probe(
223223
span,
224224
segment.ident,

src/librustc_typeck/check/method/suggest.rs

+16-14
Original file line numberDiff line numberDiff line change
@@ -557,24 +557,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
557557
let msg = format!("the `{}` method cannot be invoked on a trait object", item_name);
558558
let mut err = self.sess().struct_span_err(span, &msg);
559559
if !candidates.is_empty() {
560-
let help = format!("{an}other candidate{s} {were} found in the following \
561-
trait{s}, perhaps add a `use` for {one_of_them}:",
562-
an = if candidates.len() == 1 {"an" } else { "" },
563-
s = pluralise!(candidates.len()),
564-
were = if candidates.len() == 1 { "was" } else { "were" },
565-
one_of_them = if candidates.len() == 1 {
566-
"it"
567-
} else {
568-
"one_of_them"
569-
});
560+
let help = format!(
561+
"{an}other candidate{s} {were} found in the following trait{s}, perhaps \
562+
add a `use` for {one_of_them}:",
563+
an = if candidates.len() == 1 {"an" } else { "" },
564+
s = pluralise!(candidates.len()),
565+
were = if candidates.len() == 1 { "was" } else { "were" },
566+
one_of_them = if candidates.len() == 1 {
567+
"it"
568+
} else {
569+
"one_of_them"
570+
},
571+
);
570572
self.suggest_use_candidates(&mut err, help, candidates);
571573
}
572574
if let ty::Ref(region, t_type, mutability) = rcvr_ty.kind {
573-
let trait_type = match mutability {
574-
hir::Mutability::MutMutable => self.tcx.mk_imm_ref(region, t_type),
575-
hir::Mutability::MutImmutable => self.tcx.mk_mut_ref(region, t_type),
576-
};
577575
if needs_mut {
576+
let trait_type = self.tcx.mk_ref(region, ty::TypeAndMut {
577+
ty: t_type,
578+
mutbl: mutability.not(),
579+
});
578580
err.note(&format!("you need `{}` instead of `{}`", trait_type, rcvr_ty));
579581
}
580582
}

0 commit comments

Comments
 (0)