1
Fork 0

Rollup merge of #106221 - Nilstrieb:rptr-more-like-ref-actually, r=compiler-errors

Rename `Rptr` to `Ref` in AST and HIR

The name makes a lot more sense, and `ty::TyKind` calls it `Ref` already as well.
This commit is contained in:
Matthias Krüger 2022-12-29 13:16:04 +01:00 committed by GitHub
commit c610aeb592
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
57 changed files with 93 additions and 97 deletions

View file

@ -572,7 +572,7 @@ impl Pat {
PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()), PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
// `&mut? P` can be reinterpreted as `&mut? T` where `T` is `P` reparsed as a type. // `&mut? P` can be reinterpreted as `&mut? T` where `T` is `P` reparsed as a type.
PatKind::Ref(pat, mutbl) => { PatKind::Ref(pat, mutbl) => {
pat.to_ty().map(|ty| TyKind::Rptr(None, MutTy { ty, mutbl: *mutbl }))? pat.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
} }
// A slice/array pattern `[P]` can be reparsed as `[T]`, an unsized array, // A slice/array pattern `[P]` can be reparsed as `[T]`, an unsized array,
// when `P` can be reparsed as a type `T`. // when `P` can be reparsed as a type `T`.
@ -1193,7 +1193,7 @@ impl Expr {
ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?, ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => { ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
expr.to_ty().map(|ty| TyKind::Rptr(None, MutTy { ty, mutbl: *mutbl }))? expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
} }
ExprKind::Repeat(expr, expr_len) => { ExprKind::Repeat(expr, expr_len) => {
@ -2031,7 +2031,7 @@ impl Clone for Ty {
impl Ty { impl Ty {
pub fn peel_refs(&self) -> &Self { pub fn peel_refs(&self) -> &Self {
let mut final_ty = self; let mut final_ty = self;
while let TyKind::Rptr(_, MutTy { ty, .. }) = &final_ty.kind { while let TyKind::Ref(_, MutTy { ty, .. }) = &final_ty.kind {
final_ty = ty; final_ty = ty;
} }
final_ty final_ty
@ -2058,7 +2058,7 @@ pub enum TyKind {
/// A raw pointer (`*const T` or `*mut T`). /// A raw pointer (`*const T` or `*mut T`).
Ptr(MutTy), Ptr(MutTy),
/// A reference (`&'a T` or `&'a mut T`). /// A reference (`&'a T` or `&'a mut T`).
Rptr(Option<Lifetime>, MutTy), Ref(Option<Lifetime>, MutTy),
/// A bare function (e.g., `fn(usize) -> bool`). /// A bare function (e.g., `fn(usize) -> bool`).
BareFn(P<BareFnTy>), BareFn(P<BareFnTy>),
/// The never type (`!`). /// The never type (`!`).
@ -2286,7 +2286,7 @@ impl Param {
if ident.name == kw::SelfLower { if ident.name == kw::SelfLower {
return match self.ty.kind { return match self.ty.kind {
TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))), TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
TyKind::Rptr(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => { TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
Some(respan(self.pat.span, SelfKind::Region(lt, mutbl))) Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
} }
_ => Some(respan( _ => Some(respan(
@ -2319,7 +2319,7 @@ impl Param {
Mutability::Not, Mutability::Not,
P(Ty { P(Ty {
id: DUMMY_NODE_ID, id: DUMMY_NODE_ID,
kind: TyKind::Rptr(lt, MutTy { ty: infer_ty, mutbl }), kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
span, span,
tokens: None, tokens: None,
}), }),

View file

@ -459,7 +459,7 @@ pub fn noop_visit_ty<T: MutVisitor>(ty: &mut P<Ty>, vis: &mut T) {
TyKind::Infer | TyKind::ImplicitSelf | TyKind::Err | TyKind::Never | TyKind::CVarArgs => {} TyKind::Infer | TyKind::ImplicitSelf | TyKind::Err | TyKind::Never | TyKind::CVarArgs => {}
TyKind::Slice(ty) => vis.visit_ty(ty), TyKind::Slice(ty) => vis.visit_ty(ty),
TyKind::Ptr(mt) => vis.visit_mt(mt), TyKind::Ptr(mt) => vis.visit_mt(mt),
TyKind::Rptr(lt, mt) => { TyKind::Ref(lt, mt) => {
visit_opt(lt, |lt| noop_visit_lifetime(lt, vis)); visit_opt(lt, |lt| noop_visit_lifetime(lt, vis));
vis.visit_mt(mt); vis.visit_mt(mt);
} }

View file

@ -92,7 +92,7 @@ impl<'a> FnKind<'a> {
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
pub enum LifetimeCtxt { pub enum LifetimeCtxt {
/// Appears in a reference type. /// Appears in a reference type.
Rptr, Ref,
/// Appears as a bound on a type or another lifetime. /// Appears as a bound on a type or another lifetime.
Bound, Bound,
/// Appears as a generic argument. /// Appears as a generic argument.
@ -396,8 +396,8 @@ pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, typ: &'a Ty) {
match &typ.kind { match &typ.kind {
TyKind::Slice(ty) | TyKind::Paren(ty) => visitor.visit_ty(ty), TyKind::Slice(ty) | TyKind::Paren(ty) => visitor.visit_ty(ty),
TyKind::Ptr(mutable_type) => visitor.visit_ty(&mutable_type.ty), TyKind::Ptr(mutable_type) => visitor.visit_ty(&mutable_type.ty),
TyKind::Rptr(opt_lifetime, mutable_type) => { TyKind::Ref(opt_lifetime, mutable_type) => {
walk_list!(visitor, visit_lifetime, opt_lifetime, LifetimeCtxt::Rptr); walk_list!(visitor, visit_lifetime, opt_lifetime, LifetimeCtxt::Ref);
visitor.visit_ty(&mutable_type.ty) visitor.visit_ty(&mutable_type.ty)
} }
TyKind::Tup(tuple_element_types) => { TyKind::Tup(tuple_element_types) => {

View file

@ -1238,7 +1238,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
TyKind::Err => hir::TyKind::Err, TyKind::Err => hir::TyKind::Err,
TyKind::Slice(ty) => hir::TyKind::Slice(self.lower_ty(ty, itctx)), TyKind::Slice(ty) => hir::TyKind::Slice(self.lower_ty(ty, itctx)),
TyKind::Ptr(mt) => hir::TyKind::Ptr(self.lower_mt(mt, itctx)), TyKind::Ptr(mt) => hir::TyKind::Ptr(self.lower_mt(mt, itctx)),
TyKind::Rptr(region, mt) => { TyKind::Ref(region, mt) => {
let region = region.unwrap_or_else(|| { let region = region.unwrap_or_else(|| {
let id = if let Some(LifetimeRes::ElidedAnchor { start, end }) = let id = if let Some(LifetimeRes::ElidedAnchor { start, end }) =
self.resolver.get_lifetime_res(t.id) self.resolver.get_lifetime_res(t.id)
@ -1252,7 +1252,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
Lifetime { ident: Ident::new(kw::UnderscoreLifetime, span), id } Lifetime { ident: Ident::new(kw::UnderscoreLifetime, span), id }
}); });
let lifetime = self.lower_lifetime(&region); let lifetime = self.lower_lifetime(&region);
hir::TyKind::Rptr(lifetime, self.lower_mt(mt, itctx)) hir::TyKind::Ref(lifetime, self.lower_mt(mt, itctx))
} }
TyKind::BareFn(f) => { TyKind::BareFn(f) => {
let generic_params = self.lower_lifetime_binder(t.id, &f.generic_params); let generic_params = self.lower_lifetime_binder(t.id, &f.generic_params);
@ -1771,7 +1771,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
// Given we are only considering `ImplicitSelf` types, we needn't consider // Given we are only considering `ImplicitSelf` types, we needn't consider
// the case where we have a mutable pattern to a reference as that would // the case where we have a mutable pattern to a reference as that would
// no longer be an `ImplicitSelf`. // no longer be an `ImplicitSelf`.
TyKind::Rptr(_, mt) if mt.ty.kind.is_implicit_self() => match mt.mutbl { TyKind::Ref(_, mt) if mt.ty.kind.is_implicit_self() => match mt.mutbl {
hir::Mutability::Not => hir::ImplicitSelfKind::ImmRef, hir::Mutability::Not => hir::ImplicitSelfKind::ImmRef,
hir::Mutability::Mut => hir::ImplicitSelfKind::MutRef, hir::Mutability::Mut => hir::ImplicitSelfKind::MutRef,
}, },

View file

@ -83,7 +83,7 @@ impl<'ast> Visitor<'ast> for LifetimeCollectVisitor<'ast> {
visit::walk_ty(self, t); visit::walk_ty(self, t);
self.current_binders.pop(); self.current_binders.pop();
} }
TyKind::Rptr(None, _) => { TyKind::Ref(None, _) => {
self.record_elided_anchor(t.id, t.span); self.record_elided_anchor(t.id, t.span);
visit::walk_ty(self, t); visit::walk_ty(self, t);
} }

View file

@ -1025,7 +1025,7 @@ impl<'a> State<'a> {
self.word("*"); self.word("*");
self.print_mt(mt, true); self.print_mt(mt, true);
} }
ast::TyKind::Rptr(lifetime, mt) => { ast::TyKind::Ref(lifetime, mt) => {
self.word("&"); self.word("&");
self.print_opt_lifetime(lifetime); self.print_opt_lifetime(lifetime);
self.print_mt(mt, false); self.print_mt(mt, false);

View file

@ -2681,7 +2681,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
// Need to use the `rustc_middle::ty` types to compare against the // Need to use the `rustc_middle::ty` types to compare against the
// `return_region`. Then use the `rustc_hir` type to get only // `return_region`. Then use the `rustc_hir` type to get only
// the lifetime span. // the lifetime span.
if let hir::TyKind::Rptr(lifetime, _) = &fn_decl.inputs[index].kind { if let hir::TyKind::Ref(lifetime, _) = &fn_decl.inputs[index].kind {
// With access to the lifetime, we can get // With access to the lifetime, we can get
// the span of it. // the span of it.
arguments.push((*argument, lifetime.ident.span)); arguments.push((*argument, lifetime.ident.span));
@ -2702,7 +2702,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
let return_ty = sig.output().skip_binder(); let return_ty = sig.output().skip_binder();
let mut return_span = fn_decl.output.span(); let mut return_span = fn_decl.output.span();
if let hir::FnRetTy::Return(ty) = &fn_decl.output { if let hir::FnRetTy::Return(ty) = &fn_decl.output {
if let hir::TyKind::Rptr(lifetime, _) = ty.kind { if let hir::TyKind::Ref(lifetime, _) = ty.kind {
return_span = lifetime.ident.span; return_span = lifetime.ident.span;
} }
} }

View file

@ -1209,7 +1209,7 @@ fn get_mut_span_in_struct_field<'tcx>(
// Now we're dealing with the actual struct that we're going to suggest a change to, // Now we're dealing with the actual struct that we're going to suggest a change to,
// we can expect a field that is an immutable reference to a type. // we can expect a field that is an immutable reference to a type.
&& let hir::Node::Field(field) = node && let hir::Node::Field(field) = node
&& let hir::TyKind::Rptr(lt, hir::MutTy { mutbl: hir::Mutability::Not, ty }) = field.ty.kind && let hir::TyKind::Ref(lt, hir::MutTy { mutbl: hir::Mutability::Not, ty }) = field.ty.kind
{ {
return Some(lt.ident.span.between(ty.span)); return Some(lt.ident.span.between(ty.span));
} }

View file

@ -493,10 +493,7 @@ impl<'tcx> MirBorrowckCtxt<'_, 'tcx> {
// //
// & // &
// - let's call the lifetime of this reference `'1` // - let's call the lifetime of this reference `'1`
( (ty::Ref(region, referent_ty, _), hir::TyKind::Ref(_lifetime, referent_hir_ty)) => {
ty::Ref(region, referent_ty, _),
hir::TyKind::Rptr(_lifetime, referent_hir_ty),
) => {
if region.to_region_vid() == needle_fr { if region.to_region_vid() == needle_fr {
// Just grab the first character, the `&`. // Just grab the first character, the `&`.
let source_map = self.infcx.tcx.sess.source_map(); let source_map = self.infcx.tcx.sess.source_map();

View file

@ -117,8 +117,7 @@ fn show_substructure(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_>
// `let names: &'static _ = &["field1", "field2"];` // `let names: &'static _ = &["field1", "field2"];`
let names_let = if is_struct { let names_let = if is_struct {
let lt_static = Some(cx.lifetime_static(span)); let lt_static = Some(cx.lifetime_static(span));
let ty_static_ref = let ty_static_ref = cx.ty_ref(span, cx.ty_infer(span), lt_static, ast::Mutability::Not);
cx.ty_rptr(span, cx.ty_infer(span), lt_static, ast::Mutability::Not);
Some(cx.stmt_let_ty( Some(cx.stmt_let_ty(
span, span,
false, false,
@ -138,13 +137,13 @@ fn show_substructure(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_>
); );
let ty_slice = cx.ty( let ty_slice = cx.ty(
span, span,
ast::TyKind::Slice(cx.ty_rptr(span, ty_dyn_debug, None, ast::Mutability::Not)), ast::TyKind::Slice(cx.ty_ref(span, ty_dyn_debug, None, ast::Mutability::Not)),
); );
let values_let = cx.stmt_let_ty( let values_let = cx.stmt_let_ty(
span, span,
false, false,
Ident::new(sym::values, span), Ident::new(sym::values, span),
Some(cx.ty_rptr(span, ty_slice, None, ast::Mutability::Not)), Some(cx.ty_ref(span, ty_slice, None, ast::Mutability::Not)),
cx.expr_array_ref(span, value_exprs), cx.expr_array_ref(span, value_exprs),
); );

View file

@ -97,7 +97,7 @@ impl Ty {
match self { match self {
Ref(ty, mutbl) => { Ref(ty, mutbl) => {
let raw_ty = ty.to_ty(cx, span, self_ty, self_generics); let raw_ty = ty.to_ty(cx, span, self_ty, self_generics);
cx.ty_rptr(span, raw_ty, None, *mutbl) cx.ty_ref(span, raw_ty, None, *mutbl)
} }
Path(p) => p.to_ty(cx, span, self_ty, self_generics), Path(p) => p.to_ty(cx, span, self_ty, self_generics),
Self_ => cx.ty_path(self.to_path(cx, span, self_ty, self_generics)), Self_ => cx.ty_path(self.to_path(cx, span, self_ty, self_generics)),

View file

@ -30,7 +30,7 @@ pub fn expand_option_env<'cx>(
sp, sp,
true, true,
cx.std_path(&[sym::option, sym::Option, sym::None]), cx.std_path(&[sym::option, sym::Option, sym::None]),
vec![GenericArg::Type(cx.ty_rptr( vec![GenericArg::Type(cx.ty_ref(
sp, sp,
cx.ty_ident(sp, Ident::new(sym::str, sp)), cx.ty_ident(sp, Ident::new(sym::str, sp)),
Some(lt), Some(lt),

View file

@ -349,7 +349,7 @@ fn mk_decls(cx: &mut ExtCtxt<'_>, macros: &[ProcMacro]) -> P<ast::Item> {
.item_static( .item_static(
span, span,
Ident::new(sym::_DECLS, span), Ident::new(sym::_DECLS, span),
cx.ty_rptr( cx.ty_ref(
span, span,
cx.ty( cx.ty(
span, span,

View file

@ -87,14 +87,14 @@ impl<'a> ExtCtxt<'a> {
self.anon_const(span, ast::ExprKind::Path(None, self.path_ident(span, ident))) self.anon_const(span, ast::ExprKind::Path(None, self.path_ident(span, ident)))
} }
pub fn ty_rptr( pub fn ty_ref(
&self, &self,
span: Span, span: Span,
ty: P<ast::Ty>, ty: P<ast::Ty>,
lifetime: Option<ast::Lifetime>, lifetime: Option<ast::Lifetime>,
mutbl: ast::Mutability, mutbl: ast::Mutability,
) -> P<ast::Ty> { ) -> P<ast::Ty> {
self.ty(span, ast::TyKind::Rptr(lifetime, self.ty_mt(ty, mutbl))) self.ty(span, ast::TyKind::Ref(lifetime, self.ty_mt(ty, mutbl)))
} }
pub fn ty_ptr(&self, span: Span, ty: P<ast::Ty>, mutbl: ast::Mutability) -> P<ast::Ty> { pub fn ty_ptr(&self, span: Span, ty: P<ast::Ty>, mutbl: ast::Mutability) -> P<ast::Ty> {

View file

@ -2431,7 +2431,7 @@ impl<'hir> Ty<'hir> {
pub fn peel_refs(&self) -> &Self { pub fn peel_refs(&self) -> &Self {
let mut final_ty = self; let mut final_ty = self;
while let TyKind::Rptr(_, MutTy { ty, .. }) = &final_ty.kind { while let TyKind::Ref(_, MutTy { ty, .. }) = &final_ty.kind {
final_ty = ty; final_ty = ty;
} }
final_ty final_ty
@ -2588,7 +2588,7 @@ pub enum TyKind<'hir> {
/// A raw pointer (i.e., `*const T` or `*mut T`). /// A raw pointer (i.e., `*const T` or `*mut T`).
Ptr(MutTy<'hir>), Ptr(MutTy<'hir>),
/// A reference (i.e., `&'a T` or `&'a mut T`). /// A reference (i.e., `&'a T` or `&'a mut T`).
Rptr(&'hir Lifetime, MutTy<'hir>), Ref(&'hir Lifetime, MutTy<'hir>),
/// A bare function (e.g., `fn(usize) -> bool`). /// A bare function (e.g., `fn(usize) -> bool`).
BareFn(&'hir BareFnTy<'hir>), BareFn(&'hir BareFnTy<'hir>),
/// The never type (`!`). /// The never type (`!`).

View file

@ -809,7 +809,7 @@ pub fn walk_ty<'v, V: Visitor<'v>>(visitor: &mut V, typ: &'v Ty<'v>) {
match typ.kind { match typ.kind {
TyKind::Slice(ref ty) => visitor.visit_ty(ty), TyKind::Slice(ref ty) => visitor.visit_ty(ty),
TyKind::Ptr(ref mutable_type) => visitor.visit_ty(mutable_type.ty), TyKind::Ptr(ref mutable_type) => visitor.visit_ty(mutable_type.ty),
TyKind::Rptr(ref lifetime, ref mutable_type) => { TyKind::Ref(ref lifetime, ref mutable_type) => {
visitor.visit_lifetime(lifetime); visitor.visit_lifetime(lifetime);
visitor.visit_ty(mutable_type.ty) visitor.visit_ty(mutable_type.ty)
} }

View file

@ -2657,7 +2657,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
hir::TyKind::Ptr(ref mt) => { hir::TyKind::Ptr(ref mt) => {
tcx.mk_ptr(ty::TypeAndMut { ty: self.ast_ty_to_ty(mt.ty), mutbl: mt.mutbl }) tcx.mk_ptr(ty::TypeAndMut { ty: self.ast_ty_to_ty(mt.ty), mutbl: mt.mutbl })
} }
hir::TyKind::Rptr(ref region, ref mt) => { hir::TyKind::Ref(ref region, ref mt) => {
let r = self.ast_region_to_region(region, None); let r = self.ast_region_to_region(region, None);
debug!(?r); debug!(?r);
let t = self.ast_ty_to_ty_inner(mt.ty, true, false); let t = self.ast_ty_to_ty_inner(mt.ty, true, false);

View file

@ -291,7 +291,7 @@ fn check_trait_item(tcx: TyCtxt<'_>, trait_item: &hir::TraitItem<'_>) {
// Do some rudimentary sanity checking to avoid an ICE later (issue #83471). // Do some rudimentary sanity checking to avoid an ICE later (issue #83471).
if let Some(hir::FnSig { decl, span, .. }) = method_sig { if let Some(hir::FnSig { decl, span, .. }) = method_sig {
if let [self_ty, _] = decl.inputs { if let [self_ty, _] = decl.inputs {
if !matches!(self_ty.kind, hir::TyKind::Rptr(_, _)) { if !matches!(self_ty.kind, hir::TyKind::Ref(_, _)) {
tcx.sess tcx.sess
.struct_span_err( .struct_span_err(
self_ty.span, self_ty.span,

View file

@ -1063,7 +1063,7 @@ fn is_suggestable_infer_ty(ty: &hir::Ty<'_>) -> bool {
is_suggestable_infer_ty(ty) || matches!(length, hir::ArrayLen::Infer(_, _)) is_suggestable_infer_ty(ty) || matches!(length, hir::ArrayLen::Infer(_, _))
} }
Tup(tys) => tys.iter().any(is_suggestable_infer_ty), Tup(tys) => tys.iter().any(is_suggestable_infer_ty),
Ptr(mut_ty) | Rptr(_, mut_ty) => is_suggestable_infer_ty(mut_ty.ty), Ptr(mut_ty) | Ref(_, mut_ty) => is_suggestable_infer_ty(mut_ty.ty),
OpaqueDef(_, generic_args, _) => are_suggestable_generic_args(generic_args), OpaqueDef(_, generic_args, _) => are_suggestable_generic_args(generic_args),
Path(hir::QPath::TypeRelative(ty, segment)) => { Path(hir::QPath::TypeRelative(ty, segment)) => {
is_suggestable_infer_ty(ty) || are_suggestable_generic_args(segment.args().args) is_suggestable_infer_ty(ty) || are_suggestable_generic_args(segment.args().args)

View file

@ -617,7 +617,7 @@ impl<'a, 'tcx> Visitor<'tcx> for LifetimeContext<'a, 'tcx> {
LifetimeName::Error => {} LifetimeName::Error => {}
} }
} }
hir::TyKind::Rptr(ref lifetime_ref, ref mt) => { hir::TyKind::Ref(ref lifetime_ref, ref mt) => {
self.visit_lifetime(lifetime_ref); self.visit_lifetime(lifetime_ref);
let scope = Scope::ObjectLifetimeDefault { let scope = Scope::ObjectLifetimeDefault {
lifetime: self.map.defs.get(&lifetime_ref.hir_id).cloned(), lifetime: self.map.defs.get(&lifetime_ref.hir_id).cloned(),

View file

@ -307,7 +307,7 @@ impl<'a> State<'a> {
self.word("*"); self.word("*");
self.print_mt(mt, true); self.print_mt(mt, true);
} }
hir::TyKind::Rptr(ref lifetime, ref mt) => { hir::TyKind::Ref(ref lifetime, ref mt) => {
self.word("&"); self.word("&");
self.print_opt_lifetime(lifetime); self.print_opt_lifetime(lifetime);
self.print_mt(mt, false); self.print_mt(mt, false);

View file

@ -1921,7 +1921,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
) -> Ty<'tcx> { ) -> Ty<'tcx> {
let tcx = self.tcx; let tcx = self.tcx;
let expected = self.shallow_resolve(expected); let expected = self.shallow_resolve(expected);
let (rptr_ty, inner_ty) = if self.check_dereferenceable(pat.span, expected, inner) { let (ref_ty, inner_ty) = if self.check_dereferenceable(pat.span, expected, inner) {
// `demand::subtype` would be good enough, but using `eqtype` turns // `demand::subtype` would be good enough, but using `eqtype` turns
// out to be equally general. See (note_1) for details. // out to be equally general. See (note_1) for details.
@ -1936,9 +1936,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
kind: TypeVariableOriginKind::TypeInference, kind: TypeVariableOriginKind::TypeInference,
span: inner.span, span: inner.span,
}); });
let rptr_ty = self.new_ref_ty(pat.span, mutbl, inner_ty); let ref_ty = self.new_ref_ty(pat.span, mutbl, inner_ty);
debug!("check_pat_ref: demanding {:?} = {:?}", expected, rptr_ty); debug!("check_pat_ref: demanding {:?} = {:?}", expected, ref_ty);
let err = self.demand_eqtype_pat_diag(pat.span, expected, rptr_ty, ti); let err = self.demand_eqtype_pat_diag(pat.span, expected, ref_ty, ti);
// Look for a case like `fn foo(&foo: u32)` and suggest // Look for a case like `fn foo(&foo: u32)` and suggest
// `fn foo(foo: &u32)` // `fn foo(foo: &u32)`
@ -1946,7 +1946,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
self.borrow_pat_suggestion(&mut err, pat); self.borrow_pat_suggestion(&mut err, pat);
err.emit(); err.emit();
} }
(rptr_ty, inner_ty) (ref_ty, inner_ty)
} }
} }
} else { } else {
@ -1954,7 +1954,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
(err, err) (err, err)
}; };
self.check_pat(inner, inner_ty, def_bm, ti); self.check_pat(inner, inner_ty, def_bm, ti);
rptr_ty ref_ty
} }
/// Create a reference type with a fresh region variable. /// Create a reference type with a fresh region variable.

View file

@ -369,8 +369,8 @@ impl AddToDiagnostic for AddLifetimeParamsSuggestion<'_> {
{ {
let mut mk_suggestion = || { let mut mk_suggestion = || {
let ( let (
hir::Ty { kind: hir::TyKind::Rptr(lifetime_sub, _), .. }, hir::Ty { kind: hir::TyKind::Ref(lifetime_sub, _), .. },
hir::Ty { kind: hir::TyKind::Rptr(lifetime_sup, _), .. }, hir::Ty { kind: hir::TyKind::Ref(lifetime_sup, _), .. },
) = (self.ty_sub, self.ty_sup) else { ) = (self.ty_sub, self.ty_sup) else {
return false; return false;
}; };

View file

@ -96,8 +96,8 @@ impl<'tcx> Visitor<'tcx> for FindNestedTypeVisitor<'tcx> {
} }
} }
hir::TyKind::Rptr(ref lifetime, _) => { hir::TyKind::Ref(ref lifetime, _) => {
// the lifetime of the TyRptr // the lifetime of the Ref
let hir_id = lifetime.hir_id; let hir_id = lifetime.hir_id;
match (self.tcx.named_region(hir_id), self.bound_region) { match (self.tcx.named_region(hir_id), self.bound_region) {
// Find the index of the named region that was part of the // Find the index of the named region that was part of the

View file

@ -147,7 +147,7 @@ impl<'tcx> Visitor<'tcx> for TypeParamSpanVisitor<'tcx> {
fn visit_ty(&mut self, arg: &'tcx hir::Ty<'tcx>) { fn visit_ty(&mut self, arg: &'tcx hir::Ty<'tcx>) {
match arg.kind { match arg.kind {
hir::TyKind::Rptr(_, ref mut_ty) => { hir::TyKind::Ref(_, ref mut_ty) => {
// We don't want to suggest looking into borrowing `&T` or `&Self`. // We don't want to suggest looking into borrowing `&T` or `&Self`.
hir::intravisit::walk_ty(self, mut_ty.ty); hir::intravisit::walk_ty(self, mut_ty.ty);
return; return;

View file

@ -22,7 +22,7 @@ declare_lint_pass!(PassByValue => [PASS_BY_VALUE]);
impl<'tcx> LateLintPass<'tcx> for PassByValue { impl<'tcx> LateLintPass<'tcx> for PassByValue {
fn check_ty(&mut self, cx: &LateContext<'_>, ty: &'tcx hir::Ty<'tcx>) { fn check_ty(&mut self, cx: &LateContext<'_>, ty: &'tcx hir::Ty<'tcx>) {
match &ty.kind { match &ty.kind {
TyKind::Rptr(_, hir::MutTy { ty: inner_ty, mutbl: hir::Mutability::Not }) => { TyKind::Ref(_, hir::MutTy { ty: inner_ty, mutbl: hir::Mutability::Not }) => {
if let Some(impl_did) = cx.tcx.impl_of_method(ty.hir_id.owner.to_def_id()) { if let Some(impl_did) = cx.tcx.impl_of_method(ty.hir_id.owner.to_def_id()) {
if cx.tcx.impl_trait_ref(impl_did).is_some() { if cx.tcx.impl_trait_ref(impl_did).is_some() {
return; return;

View file

@ -1229,7 +1229,7 @@ impl<'a> Parser<'a> {
let sum_span = ty.span.to(self.prev_token.span); let sum_span = ty.span.to(self.prev_token.span);
let sub = match &ty.kind { let sub = match &ty.kind {
TyKind::Rptr(lifetime, mut_ty) => { TyKind::Ref(lifetime, mut_ty) => {
let sum_with_parens = pprust::to_string(|s| { let sum_with_parens = pprust::to_string(|s| {
s.s.word("&"); s.s.word("&");
s.print_opt_lifetime(lifetime); s.print_opt_lifetime(lifetime);

View file

@ -504,7 +504,7 @@ impl<'a> Parser<'a> {
self.bump_with((dyn_tok, dyn_tok_sp)); self.bump_with((dyn_tok, dyn_tok_sp));
} }
let ty = self.parse_ty_no_plus()?; let ty = self.parse_ty_no_plus()?;
Ok(TyKind::Rptr(opt_lifetime, MutTy { ty, mutbl })) Ok(TyKind::Ref(opt_lifetime, MutTy { ty, mutbl }))
} }
// Parses the `typeof(EXPR)`. // Parses the `typeof(EXPR)`.

View file

@ -324,7 +324,7 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
Slice, Slice,
Array, Array,
Ptr, Ptr,
Rptr, Ref,
BareFn, BareFn,
Never, Never,
Tup, Tup,
@ -580,7 +580,7 @@ impl<'v> ast_visit::Visitor<'v> for StatCollector<'v> {
Slice, Slice,
Array, Array,
Ptr, Ptr,
Rptr, Ref,
BareFn, BareFn,
Never, Never,
Tup, Tup,

View file

@ -651,7 +651,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> {
let prev = self.diagnostic_metadata.current_trait_object; let prev = self.diagnostic_metadata.current_trait_object;
let prev_ty = self.diagnostic_metadata.current_type_path; let prev_ty = self.diagnostic_metadata.current_type_path;
match ty.kind { match ty.kind {
TyKind::Rptr(None, _) => { TyKind::Ref(None, _) => {
// Elided lifetime in reference: we resolve as if there was some lifetime `'_` with // Elided lifetime in reference: we resolve as if there was some lifetime `'_` with
// NodeId `ty.id`. // NodeId `ty.id`.
// This span will be used in case of elision failure. // This span will be used in case of elision failure.
@ -2004,7 +2004,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
impl<'a> Visitor<'a> for SelfVisitor<'_, '_> { impl<'a> Visitor<'a> for SelfVisitor<'_, '_> {
fn visit_ty(&mut self, ty: &'a Ty) { fn visit_ty(&mut self, ty: &'a Ty) {
trace!("SelfVisitor considering ty={:?}", ty); trace!("SelfVisitor considering ty={:?}", ty);
if let TyKind::Rptr(lt, ref mt) = ty.kind && self.is_self_ty(&mt.ty) { if let TyKind::Ref(lt, ref mt) = ty.kind && self.is_self_ty(&mt.ty) {
let lt_id = if let Some(lt) = lt { let lt_id = if let Some(lt) = lt {
lt.id lt.id
} else { } else {

View file

@ -1554,7 +1554,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
fn extract_node_id(t: &Ty) -> Option<NodeId> { fn extract_node_id(t: &Ty) -> Option<NodeId> {
match t.kind { match t.kind {
TyKind::Path(None, _) => Some(t.id), TyKind::Path(None, _) => Some(t.id),
TyKind::Rptr(_, ref mut_ty) => extract_node_id(&mut_ty.ty), TyKind::Ref(_, ref mut_ty) => extract_node_id(&mut_ty.ty),
// This doesn't handle the remaining `Ty` variants as they are not // This doesn't handle the remaining `Ty` variants as they are not
// that commonly the self_type, it might be interesting to provide // that commonly the self_type, it might be interesting to provide
// support for those in future. // support for those in future.
@ -2189,7 +2189,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
Some(LifetimeUseSet::One { use_span, use_ctxt }) => { Some(LifetimeUseSet::One { use_span, use_ctxt }) => {
debug!(?param.ident, ?param.ident.span, ?use_span); debug!(?param.ident, ?param.ident.span, ?use_span);
let elidable = matches!(use_ctxt, LifetimeCtxt::Rptr); let elidable = matches!(use_ctxt, LifetimeCtxt::Ref);
let deletion_span = deletion_span(); let deletion_span = deletion_span();
self.r.lint_buffer.buffer_lint_with_diagnostic( self.r.lint_buffer.buffer_lint_with_diagnostic(

View file

@ -165,7 +165,7 @@ impl<'hir> Sig for hir::Ty<'hir> {
let text = format!("{}{}", prefix, nested.text); let text = format!("{}{}", prefix, nested.text);
Ok(replace_text(nested, text)) Ok(replace_text(nested, text))
} }
hir::TyKind::Rptr(ref lifetime, ref mt) => { hir::TyKind::Ref(ref lifetime, ref mt) => {
let mut prefix = "&".to_owned(); let mut prefix = "&".to_owned();
prefix.push_str(&lifetime.ident.to_string()); prefix.push_str(&lifetime.ident.to_string());
prefix.push(' '); prefix.push(' ');

View file

@ -2771,7 +2771,7 @@ impl<'v> Visitor<'v> for FindTypeParam {
// and suggest `T: ?Sized` regardless of their obligations. This is fine because the errors // and suggest `T: ?Sized` regardless of their obligations. This is fine because the errors
// in that case should make what happened clear enough. // in that case should make what happened clear enough.
match ty.kind { match ty.kind {
hir::TyKind::Ptr(_) | hir::TyKind::Rptr(..) | hir::TyKind::TraitObject(..) => {} hir::TyKind::Ptr(_) | hir::TyKind::Ref(..) | hir::TyKind::TraitObject(..) => {}
hir::TyKind::Path(hir::QPath::Resolved(None, path)) hir::TyKind::Path(hir::QPath::Resolved(None, path))
if path.segments.len() == 1 && path.segments[0].ident.name == self.param => if path.segments.len() == 1 && path.segments[0].ident.name == self.param =>
{ {

View file

@ -1612,7 +1612,7 @@ pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> T
match ty.kind { match ty.kind {
TyKind::Never => Primitive(PrimitiveType::Never), TyKind::Never => Primitive(PrimitiveType::Never),
TyKind::Ptr(ref m) => RawPointer(m.mutbl, Box::new(clean_ty(m.ty, cx))), TyKind::Ptr(ref m) => RawPointer(m.mutbl, Box::new(clean_ty(m.ty, cx))),
TyKind::Rptr(ref l, ref m) => { TyKind::Ref(ref l, ref m) => {
let lifetime = if l.is_anonymous() { None } else { Some(clean_lifetime(*l, cx)) }; let lifetime = if l.is_anonymous() { None } else { Some(clean_lifetime(*l, cx)) };
BorrowedRef { lifetime, mutability: m.mutbl, type_: Box::new(clean_ty(m.ty, cx)) } BorrowedRef { lifetime, mutability: m.mutbl, type_: Box::new(clean_ty(m.ty, cx)) }
} }

View file

@ -59,7 +59,7 @@ pub async fn const_generics<const N: usize>(_: impl Trait<N>) {}
// @has - '//pre[@class="rust fn"]' 'pub async fn elided(foo: &str) -> &str' // @has - '//pre[@class="rust fn"]' 'pub async fn elided(foo: &str) -> &str'
pub async fn elided(foo: &str) -> &str {} pub async fn elided(foo: &str) -> &str {}
// This should really be shown as written, but for implementation reasons it's difficult. // This should really be shown as written, but for implementation reasons it's difficult.
// See `impl Clean for TyKind::Rptr`. // See `impl Clean for TyKind::Ref`.
// @has async_fn/fn.user_elided.html // @has async_fn/fn.user_elided.html
// @has - '//pre[@class="rust fn"]' 'pub async fn user_elided(foo: &str) -> &str' // @has - '//pre[@class="rust fn"]' 'pub async fn user_elided(foo: &str) -> &str'
pub async fn user_elided(foo: &'_ str) -> &str {} pub async fn user_elided(foo: &'_ str) -> &str {}

View file

@ -801,7 +801,7 @@ fn test_ty() {
assert_eq!(stringify_ty!(*const T), "*const T"); assert_eq!(stringify_ty!(*const T), "*const T");
assert_eq!(stringify_ty!(*mut T), "*mut T"); assert_eq!(stringify_ty!(*mut T), "*mut T");
// TyKind::Rptr // TyKind::Ref
assert_eq!(stringify_ty!(&T), "&T"); assert_eq!(stringify_ty!(&T), "&T");
assert_eq!(stringify_ty!(&mut T), "&mut T"); assert_eq!(stringify_ty!(&mut T), "&mut T");
assert_eq!(stringify_ty!(&'a T), "&'a T"); assert_eq!(stringify_ty!(&'a T), "&'a T");

View file

@ -41,8 +41,8 @@ ast-stats-1 - Wild 88 ( 1.2%) 1
ast-stats-1 - Ident 440 ( 5.9%) 5 ast-stats-1 - Ident 440 ( 5.9%) 5
ast-stats-1 PathSegment 720 ( 9.7%) 30 24 ast-stats-1 PathSegment 720 ( 9.7%) 30 24
ast-stats-1 Ty 896 (12.1%) 14 64 ast-stats-1 Ty 896 (12.1%) 14 64
ast-stats-1 - Rptr 64 ( 0.9%) 1
ast-stats-1 - Ptr 64 ( 0.9%) 1 ast-stats-1 - Ptr 64 ( 0.9%) 1
ast-stats-1 - Ref 64 ( 0.9%) 1
ast-stats-1 - ImplicitSelf 128 ( 1.7%) 2 ast-stats-1 - ImplicitSelf 128 ( 1.7%) 2
ast-stats-1 - Path 640 ( 8.6%) 10 ast-stats-1 - Path 640 ( 8.6%) 10
ast-stats-1 Item 1_656 (22.3%) 9 184 ast-stats-1 Item 1_656 (22.3%) 9 184
@ -100,8 +100,8 @@ ast-stats-2 - Lit 144 ( 1.8%) 2
ast-stats-2 - Block 216 ( 2.7%) 3 ast-stats-2 - Block 216 ( 2.7%) 3
ast-stats-2 PathSegment 792 ( 9.8%) 33 24 ast-stats-2 PathSegment 792 ( 9.8%) 33 24
ast-stats-2 Ty 896 (11.0%) 14 64 ast-stats-2 Ty 896 (11.0%) 14 64
ast-stats-2 - Rptr 64 ( 0.8%) 1
ast-stats-2 - Ptr 64 ( 0.8%) 1 ast-stats-2 - Ptr 64 ( 0.8%) 1
ast-stats-2 - Ref 64 ( 0.8%) 1
ast-stats-2 - ImplicitSelf 128 ( 1.6%) 2 ast-stats-2 - ImplicitSelf 128 ( 1.6%) 2
ast-stats-2 - Path 640 ( 7.9%) 10 ast-stats-2 - Path 640 ( 7.9%) 10
ast-stats-2 Item 2_024 (25.0%) 11 184 ast-stats-2 Item 2_024 (25.0%) 11 184
@ -154,7 +154,7 @@ hir-stats GenericParam 400 ( 4.4%) 5 80
hir-stats Generics 560 ( 6.2%) 10 56 hir-stats Generics 560 ( 6.2%) 10 56
hir-stats Ty 720 ( 8.0%) 15 48 hir-stats Ty 720 ( 8.0%) 15 48
hir-stats - Ptr 48 ( 0.5%) 1 hir-stats - Ptr 48 ( 0.5%) 1
hir-stats - Rptr 48 ( 0.5%) 1 hir-stats - Ref 48 ( 0.5%) 1
hir-stats - Path 624 ( 6.9%) 13 hir-stats - Path 624 ( 6.9%) 13
hir-stats Expr 768 ( 8.5%) 12 64 hir-stats Expr 768 ( 8.5%) 12 64
hir-stats - Path 64 ( 0.7%) 1 hir-stats - Path 64 ( 0.7%) 1

View file

@ -969,14 +969,14 @@ fn binding_ty_auto_deref_stability<'tcx>(
precedence: i8, precedence: i8,
binder_args: &'tcx List<BoundVariableKind>, binder_args: &'tcx List<BoundVariableKind>,
) -> Position { ) -> Position {
let TyKind::Rptr(_, ty) = &ty.kind else { let TyKind::Ref(_, ty) = &ty.kind else {
return Position::Other(precedence); return Position::Other(precedence);
}; };
let mut ty = ty; let mut ty = ty;
loop { loop {
break match ty.ty.kind { break match ty.ty.kind {
TyKind::Rptr(_, ref ref_ty) => { TyKind::Ref(_, ref ref_ty) => {
ty = ref_ty; ty = ref_ty;
continue; continue;
}, },

View file

@ -152,7 +152,7 @@ fn captures_all_lifetimes(inputs: &[Ty<'_>], output_lifetimes: &[LifetimeName])
let input_lifetimes: Vec<LifetimeName> = inputs let input_lifetimes: Vec<LifetimeName> = inputs
.iter() .iter()
.filter_map(|ty| { .filter_map(|ty| {
if let TyKind::Rptr(lt, _) = ty.kind { if let TyKind::Ref(lt, _) = ty.kind {
Some(lt.res) Some(lt.res)
} else { } else {
None None

View file

@ -3986,7 +3986,7 @@ impl OutType {
(Self::Unit, &hir::FnRetTy::Return(ty)) if is_unit(ty) => true, (Self::Unit, &hir::FnRetTy::Return(ty)) if is_unit(ty) => true,
(Self::Bool, &hir::FnRetTy::Return(ty)) if is_bool(ty) => true, (Self::Bool, &hir::FnRetTy::Return(ty)) if is_bool(ty) => true,
(Self::Any, &hir::FnRetTy::Return(ty)) if !is_unit(ty) => true, (Self::Any, &hir::FnRetTy::Return(ty)) if !is_unit(ty) => true,
(Self::Ref, &hir::FnRetTy::Return(ty)) => matches!(ty.kind, hir::TyKind::Rptr(_, _)), (Self::Ref, &hir::FnRetTy::Return(ty)) => matches!(ty.kind, hir::TyKind::Ref(_, _)),
_ => false, _ => false,
} }
} }

View file

@ -86,7 +86,7 @@ impl<'a, 'tcx> intravisit::Visitor<'tcx> for MutVisitor<'a, 'tcx> {
return; return;
} }
if let hir::TyKind::Rptr( if let hir::TyKind::Ref(
_, _,
hir::MutTy { hir::MutTy {
ty: pty, ty: pty,
@ -94,7 +94,7 @@ impl<'a, 'tcx> intravisit::Visitor<'tcx> for MutVisitor<'a, 'tcx> {
}, },
) = ty.kind ) = ty.kind
{ {
if let hir::TyKind::Rptr( if let hir::TyKind::Ref(
_, _,
hir::MutTy { hir::MutTy {
mutbl: hir::Mutability::Mut, mutbl: hir::Mutability::Mut,

View file

@ -124,7 +124,7 @@ impl EarlyLintPass for NeedlessArbitrarySelfType {
check_param_inner(cx, path, p.span.to(p.ty.span), &Mode::Value, mutbl); check_param_inner(cx, path, p.span.to(p.ty.span), &Mode::Value, mutbl);
} }
}, },
TyKind::Rptr(lifetime, mut_ty) => { TyKind::Ref(lifetime, mut_ty) => {
if_chain! { if_chain! {
if let TyKind::Path(None, path) = &mut_ty.ty.kind; if let TyKind::Path(None, path) = &mut_ty.ty.kind;
if let PatKind::Ident(BindingAnnotation::NONE, _, _) = p.pat.kind; if let PatKind::Ident(BindingAnnotation::NONE, _, _) = p.pat.kind;

View file

@ -184,7 +184,7 @@ impl<'tcx> PassByRefOrValue {
if is_copy(cx, ty) if is_copy(cx, ty)
&& let Some(size) = cx.layout_of(ty).ok().map(|l| l.size.bytes()) && let Some(size) = cx.layout_of(ty).ok().map(|l| l.size.bytes())
&& size <= self.ref_min_size && size <= self.ref_min_size
&& let hir::TyKind::Rptr(_, MutTy { ty: decl_ty, .. }) = input.kind && let hir::TyKind::Ref(_, MutTy { ty: decl_ty, .. }) = input.kind
{ {
if let Some(typeck) = cx.maybe_typeck_results() { if let Some(typeck) = cx.maybe_typeck_results() {
// Don't lint if an unsafe pointer is created. // Don't lint if an unsafe pointer is created.

View file

@ -421,7 +421,7 @@ fn check_fn_args<'cx, 'tcx: 'cx>(
if let ty::Ref(_, ty, mutability) = *ty.kind(); if let ty::Ref(_, ty, mutability) = *ty.kind();
if let ty::Adt(adt, substs) = *ty.kind(); if let ty::Adt(adt, substs) = *ty.kind();
if let TyKind::Rptr(lt, ref ty) = hir_ty.kind; if let TyKind::Ref(lt, ref ty) = hir_ty.kind;
if let TyKind::Path(QPath::Resolved(None, path)) = ty.ty.kind; if let TyKind::Path(QPath::Resolved(None, path)) = ty.ty.kind;
// Check that the name as typed matches the actual name of the type. // Check that the name as typed matches the actual name of the type.
@ -503,14 +503,14 @@ fn check_fn_args<'cx, 'tcx: 'cx>(
fn check_mut_from_ref<'tcx>(cx: &LateContext<'tcx>, sig: &FnSig<'_>, body: Option<&'tcx Body<'_>>) { fn check_mut_from_ref<'tcx>(cx: &LateContext<'tcx>, sig: &FnSig<'_>, body: Option<&'tcx Body<'_>>) {
if let FnRetTy::Return(ty) = sig.decl.output if let FnRetTy::Return(ty) = sig.decl.output
&& let Some((out, Mutability::Mut, _)) = get_rptr_lm(ty) && let Some((out, Mutability::Mut, _)) = get_ref_lm(ty)
{ {
let out_region = cx.tcx.named_region(out.hir_id); let out_region = cx.tcx.named_region(out.hir_id);
let args: Option<Vec<_>> = sig let args: Option<Vec<_>> = sig
.decl .decl
.inputs .inputs
.iter() .iter()
.filter_map(get_rptr_lm) .filter_map(get_ref_lm)
.filter(|&(lt, _, _)| cx.tcx.named_region(lt.hir_id) == out_region) .filter(|&(lt, _, _)| cx.tcx.named_region(lt.hir_id) == out_region)
.map(|(_, mutability, span)| (mutability == Mutability::Not).then_some(span)) .map(|(_, mutability, span)| (mutability == Mutability::Not).then_some(span))
.collect(); .collect();
@ -704,8 +704,8 @@ fn matches_preds<'tcx>(
}) })
} }
fn get_rptr_lm<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> Option<(&'tcx Lifetime, Mutability, Span)> { fn get_ref_lm<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> Option<(&'tcx Lifetime, Mutability, Span)> {
if let TyKind::Rptr(lt, ref m) = ty.kind { if let TyKind::Ref(lt, ref m) = ty.kind {
Some((lt, m.mutbl, ty.span)) Some((lt, m.mutbl, ty.span))
} else { } else {
None None

View file

@ -59,7 +59,7 @@ impl RedundantStaticLifetimes {
} }
}, },
// This is what we are looking for ! // This is what we are looking for !
TyKind::Rptr(ref optional_lifetime, ref borrow_type) => { TyKind::Ref(ref optional_lifetime, ref borrow_type) => {
// Match the 'static lifetime // Match the 'static lifetime
if let Some(lifetime) = *optional_lifetime { if let Some(lifetime) = *optional_lifetime {
match borrow_type.ty.kind { match borrow_type.ty.kind {

View file

@ -39,7 +39,7 @@ declare_lint_pass!(RefOptionRef => [REF_OPTION_REF]);
impl<'tcx> LateLintPass<'tcx> for RefOptionRef { impl<'tcx> LateLintPass<'tcx> for RefOptionRef {
fn check_ty(&mut self, cx: &LateContext<'tcx>, ty: &'tcx Ty<'tcx>) { fn check_ty(&mut self, cx: &LateContext<'tcx>, ty: &'tcx Ty<'tcx>) {
if_chain! { if_chain! {
if let TyKind::Rptr(_, ref mut_ty) = ty.kind; if let TyKind::Ref(_, ref mut_ty) = ty.kind;
if mut_ty.mutbl == Mutability::Not; if mut_ty.mutbl == Mutability::Not;
if let TyKind::Path(ref qpath) = &mut_ty.ty.kind; if let TyKind::Path(ref qpath) = &mut_ty.ty.kind;
let last = last_path_segment(qpath); let last = last_path_segment(qpath);
@ -52,7 +52,7 @@ impl<'tcx> LateLintPass<'tcx> for RefOptionRef {
GenericArg::Type(inner_ty) => Some(inner_ty), GenericArg::Type(inner_ty) => Some(inner_ty),
_ => None, _ => None,
}); });
if let TyKind::Rptr(_, ref inner_mut_ty) = inner_ty.kind; if let TyKind::Ref(_, ref inner_mut_ty) = inner_ty.kind;
if inner_mut_ty.mutbl == Mutability::Not; if inner_mut_ty.mutbl == Mutability::Not;
then { then {

View file

@ -71,7 +71,7 @@ pub(super) fn check<'tcx>(
/// Gets the type `Bar` in `…::transmute<Foo, &Bar>`. /// Gets the type `Bar` in `…::transmute<Foo, &Bar>`.
fn get_explicit_type<'tcx>(path: &'tcx Path<'tcx>) -> Option<&'tcx hir::Ty<'tcx>> { fn get_explicit_type<'tcx>(path: &'tcx Path<'tcx>) -> Option<&'tcx hir::Ty<'tcx>> {
if let GenericArg::Type(ty) = path.segments.last()?.args?.args.get(1)? if let GenericArg::Type(ty) = path.segments.last()?.args?.args.get(1)?
&& let TyKind::Rptr(_, ty) = &ty.kind && let TyKind::Ref(_, ty) = &ty.kind
{ {
Some(ty.ty) Some(ty.ty)
} else { } else {

View file

@ -539,7 +539,7 @@ impl Types {
QPath::LangItem(..) => {}, QPath::LangItem(..) => {},
} }
}, },
TyKind::Rptr(lt, ref mut_ty) => { TyKind::Ref(lt, ref mut_ty) => {
context.is_nested_call = true; context.is_nested_call = true;
if !borrowed_box::check(cx, hir_ty, lt, mut_ty) { if !borrowed_box::check(cx, hir_ty, lt, mut_ty) {
self.check_ty(cx, mut_ty.ty, context); self.check_ty(cx, mut_ty.ty, context);

View file

@ -44,7 +44,7 @@ impl<'tcx> Visitor<'tcx> for TypeComplexityVisitor {
fn visit_ty(&mut self, ty: &'tcx hir::Ty<'_>) { fn visit_ty(&mut self, ty: &'tcx hir::Ty<'_>) {
let (add_score, sub_nest) = match ty.kind { let (add_score, sub_nest) = match ty.kind {
// _, &x and *x have only small overhead; don't mess with nesting level // _, &x and *x have only small overhead; don't mess with nesting level
TyKind::Infer | TyKind::Ptr(..) | TyKind::Rptr(..) => (1, 0), TyKind::Infer | TyKind::Ptr(..) | TyKind::Ref(..) => (1, 0),
// the "normal" components of a type: named types, arrays/tuples // the "normal" components of a type: named types, arrays/tuples
TyKind::Path(..) | TyKind::Slice(..) | TyKind::Tup(..) | TyKind::Array(..) => (10 * self.nest, 1), TyKind::Path(..) | TyKind::Slice(..) | TyKind::Tup(..) | TyKind::Array(..) => (10 * self.nest, 1),

View file

@ -13,7 +13,7 @@ pub(super) fn match_borrows_parameter(_cx: &LateContext<'_>, qpath: &QPath<'_>)
GenericArg::Type(ty) => Some(ty), GenericArg::Type(ty) => Some(ty),
_ => None, _ => None,
}); });
if let TyKind::Rptr(..) = ty.kind; if let TyKind::Ref(..) = ty.kind;
then { then {
return Some(ty.span); return Some(ty.span);
} }

View file

@ -257,7 +257,7 @@ impl<'tcx> LateLintPass<'tcx> for LintWithoutLintPass {
} }
pub(super) fn is_lint_ref_type(cx: &LateContext<'_>, ty: &hir::Ty<'_>) -> bool { pub(super) fn is_lint_ref_type(cx: &LateContext<'_>, ty: &hir::Ty<'_>) -> bool {
if let TyKind::Rptr( if let TyKind::Ref(
_, _,
MutTy { MutTy {
ty: inner, ty: inner,

View file

@ -625,7 +625,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
(Slice(l), Slice(r)) => eq_ty(l, r), (Slice(l), Slice(r)) => eq_ty(l, r),
(Array(le, ls), Array(re, rs)) => eq_ty(le, re) && eq_expr(&ls.value, &rs.value), (Array(le, ls), Array(re, rs)) => eq_ty(le, re) && eq_expr(&ls.value, &rs.value),
(Ptr(l), Ptr(r)) => l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty), (Ptr(l), Ptr(r)) => l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty),
(Rptr(ll, l), Rptr(rl, r)) => { (Ref(ll, l), Ref(rl, r)) => {
both(ll, rl, |l, r| eq_id(l.ident, r.ident)) && l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty) both(ll, rl, |l, r| eq_id(l.ident, r.ident)) && l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty)
}, },
(BareFn(l), BareFn(r)) => { (BareFn(l), BareFn(r)) => {

View file

@ -430,7 +430,7 @@ impl HirEqInterExpr<'_, '_, '_> {
(&TyKind::Slice(l_vec), &TyKind::Slice(r_vec)) => self.eq_ty(l_vec, r_vec), (&TyKind::Slice(l_vec), &TyKind::Slice(r_vec)) => self.eq_ty(l_vec, r_vec),
(&TyKind::Array(lt, ll), &TyKind::Array(rt, rl)) => self.eq_ty(lt, rt) && self.eq_array_length(ll, rl), (&TyKind::Array(lt, ll), &TyKind::Array(rt, rl)) => self.eq_ty(lt, rt) && self.eq_array_length(ll, rl),
(TyKind::Ptr(l_mut), TyKind::Ptr(r_mut)) => l_mut.mutbl == r_mut.mutbl && self.eq_ty(l_mut.ty, r_mut.ty), (TyKind::Ptr(l_mut), TyKind::Ptr(r_mut)) => l_mut.mutbl == r_mut.mutbl && self.eq_ty(l_mut.ty, r_mut.ty),
(TyKind::Rptr(_, l_rmut), TyKind::Rptr(_, r_rmut)) => { (TyKind::Ref(_, l_rmut), TyKind::Ref(_, r_rmut)) => {
l_rmut.mutbl == r_rmut.mutbl && self.eq_ty(l_rmut.ty, r_rmut.ty) l_rmut.mutbl == r_rmut.mutbl && self.eq_ty(l_rmut.ty, r_rmut.ty)
}, },
(TyKind::Path(l), TyKind::Path(r)) => self.eq_qpath(l, r), (TyKind::Path(l), TyKind::Path(r)) => self.eq_qpath(l, r),
@ -950,7 +950,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> {
self.hash_ty(mut_ty.ty); self.hash_ty(mut_ty.ty);
mut_ty.mutbl.hash(&mut self.s); mut_ty.mutbl.hash(&mut self.s);
}, },
TyKind::Rptr(lifetime, ref mut_ty) => { TyKind::Ref(lifetime, ref mut_ty) => {
self.hash_lifetime(lifetime); self.hash_lifetime(lifetime);
self.hash_ty(mut_ty.ty); self.hash_ty(mut_ty.ty);
mut_ty.mutbl.hash(&mut self.s); mut_ty.mutbl.hash(&mut self.s);

View file

@ -2264,7 +2264,7 @@ pub fn peel_hir_ty_refs<'a>(mut ty: &'a hir::Ty<'a>) -> (&'a hir::Ty<'a>, usize)
let mut count = 0; let mut count = 0;
loop { loop {
match &ty.kind { match &ty.kind {
TyKind::Rptr(_, ref_ty) => { TyKind::Ref(_, ref_ty) => {
ty = ref_ty.ty; ty = ref_ty.ty;
count += 1; count += 1;
}, },

View file

@ -813,9 +813,9 @@ pub fn deref_closure_args(cx: &LateContext<'_>, closure: &hir::Expr<'_>) -> Opti
let closure_body = cx.tcx.hir().body(body); let closure_body = cx.tcx.hir().body(body);
// is closure arg a type annotated double reference (i.e.: `|x: &&i32| ...`) // is closure arg a type annotated double reference (i.e.: `|x: &&i32| ...`)
// a type annotation is present if param `kind` is different from `TyKind::Infer` // a type annotation is present if param `kind` is different from `TyKind::Infer`
let closure_arg_is_type_annotated_double_ref = if let TyKind::Rptr(_, MutTy { ty, .. }) = fn_decl.inputs[0].kind let closure_arg_is_type_annotated_double_ref = if let TyKind::Ref(_, MutTy { ty, .. }) = fn_decl.inputs[0].kind
{ {
matches!(ty.kind, TyKind::Rptr(_, MutTy { .. })) matches!(ty.kind, TyKind::Ref(_, MutTy { .. }))
} else { } else {
false false
}; };

View file

@ -496,7 +496,7 @@ pub fn type_is_unsafe_function<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -> bo
/// Returns the base type for HIR references and pointers. /// Returns the base type for HIR references and pointers.
pub fn walk_ptrs_hir_ty<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> &'tcx hir::Ty<'tcx> { pub fn walk_ptrs_hir_ty<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> &'tcx hir::Ty<'tcx> {
match ty.kind { match ty.kind {
TyKind::Ptr(ref mut_ty) | TyKind::Rptr(_, ref mut_ty) => walk_ptrs_hir_ty(mut_ty.ty), TyKind::Ptr(ref mut_ty) | TyKind::Ref(_, ref mut_ty) => walk_ptrs_hir_ty(mut_ty.ty),
_ => ty, _ => ty,
} }
} }

View file

@ -688,7 +688,7 @@ impl Rewrite for ast::Ty {
rewrite_unary_prefix(context, prefix, &*mt.ty, shape) rewrite_unary_prefix(context, prefix, &*mt.ty, shape)
} }
ast::TyKind::Rptr(ref lifetime, ref mt) => { ast::TyKind::Ref(ref lifetime, ref mt) => {
let mut_str = format_mutability(mt.mutbl); let mut_str = format_mutability(mt.mutbl);
let mut_len = mut_str.len(); let mut_len = mut_str.len();
let mut result = String::with_capacity(128); let mut result = String::with_capacity(128);
@ -1059,7 +1059,7 @@ pub(crate) fn can_be_overflowed_type(
) -> bool { ) -> bool {
match ty.kind { match ty.kind {
ast::TyKind::Tup(..) => context.use_block_indent() && len == 1, ast::TyKind::Tup(..) => context.use_block_indent() && len == 1,
ast::TyKind::Rptr(_, ref mutty) | ast::TyKind::Ptr(ref mutty) => { ast::TyKind::Ref(_, ref mutty) | ast::TyKind::Ptr(ref mutty) => {
can_be_overflowed_type(context, &*mutty.ty, len) can_be_overflowed_type(context, &*mutty.ty, len)
} }
_ => false, _ => false,