Auto merge of #101241 - camsteffen:refactor-binding-annotations, r=cjgillot
`BindingAnnotation` refactor * `ast::BindingMode` is deleted and replaced with `hir::BindingAnnotation` (which is moved to `ast`) * `BindingAnnotation` is changed from an enum to a tuple struct e.g. `BindingAnnotation(ByRef::No, Mutability::Mut)` * Associated constants added for convenience `BindingAnnotation::{NONE, REF, MUT, REF_MUT}` One goal is to make it more clear that `BindingAnnotation` merely represents syntax `ref mut` and not the actual binding mode. This was especially confusing since we had `ast::BindingMode`->`hir::BindingAnnotation`->`thir::BindingMode`. I wish there were more symmetry between `ByRef` and `Mutability` (variant) naming (maybe `Mutable::Yes`?), and I also don't love how long the name `BindingAnnotation` is, but this seems like the best compromise. Ideas welcome.
This commit is contained in:
commit
6c358c67d4
61 changed files with 278 additions and 333 deletions
|
@ -866,23 +866,12 @@ impl<'l> Visitor<'l> for PathCollector<'l> {
|
|||
hir::PatKind::TupleStruct(ref path, ..) | hir::PatKind::Path(ref path) => {
|
||||
self.collected_paths.push((p.hir_id, path));
|
||||
}
|
||||
hir::PatKind::Binding(bm, _, ident, _) => {
|
||||
hir::PatKind::Binding(hir::BindingAnnotation(_, mutbl), _, ident, _) => {
|
||||
debug!(
|
||||
"PathCollector, visit ident in pat {}: {:?} {:?}",
|
||||
ident, p.span, ident.span
|
||||
);
|
||||
let immut = match bm {
|
||||
// Even if the ref is mut, you can't change the ref, only
|
||||
// the data pointed at, so showing the initialising expression
|
||||
// is still worthwhile.
|
||||
hir::BindingAnnotation::Unannotated | hir::BindingAnnotation::Ref => {
|
||||
hir::Mutability::Not
|
||||
}
|
||||
hir::BindingAnnotation::Mutable | hir::BindingAnnotation::RefMut => {
|
||||
hir::Mutability::Mut
|
||||
}
|
||||
};
|
||||
self.collected_idents.push((p.hir_id, ident, immut));
|
||||
self.collected_idents.push((p.hir_id, ident, mutbl));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue