Commit graph

28 commits

Author SHA1 Message Date
Samuel Tardieu
f5122ae4fd Add doc for the clippy_lints::methods::derefs_to_slice() helper 2025-04-08 09:56:45 +02:00
Nicholas Nethercote
91481e3bcf Overhaul the intravisit::Map trait.
First of all, note that `Map` has three different relevant meanings.
- The `intravisit::Map` trait.
- The `map::Map` struct.
- The `NestedFilter::Map` associated type.

The `intravisit::Map` trait is impl'd twice.
- For `!`, where the methods are all unreachable.
- For `map::Map`, which gets HIR stuff from the `TyCtxt`.

As part of getting rid of `map::Map`, this commit changes `impl
intravisit::Map for map::Map` to `impl intravisit::Map for TyCtxt`. It's
fairly straightforward except various things are renamed, because the
existing names would no longer have made sense.

- `trait intravisit::Map` becomes `trait intravisit::HirTyCtxt`, so named
  because it gets some HIR stuff from a `TyCtxt`.
- `NestedFilter::Map` assoc type becomes `NestedFilter::MaybeTyCtxt`,
  because it's always `!` or `TyCtxt`.
- `Visitor::nested_visit_map` becomes `Visitor::maybe_tcx`.

I deliberately made the new trait and associated type names different to
avoid the old `type Map: Map` situation, which I found confusing. We now
have `type MaybeTyCtxt: HirTyCtxt`.
2025-02-17 13:21:35 +11:00
Michael Goulet
69b088626c Fix tests 2024-10-19 18:07:35 +00:00
Philipp Krones
277c4e4baf Merge commit 'aa0d551351' into clippy-subtree-update 2024-10-03 16:32:51 +02:00
Philipp Krones
b61fcbee76 Merge commit '7901289135' into clippy-subtree-update 2024-09-24 11:58:04 +02:00
Pavel Grigorenko
0b8cb4a1eb Make Ty::boxed_ty return an Option 2024-09-06 00:30:36 +03:00
Philipp Krones
3bff119f63 Merge commit '3e5a02b13b' into clippy-subtree-update 2024-06-13 12:30:48 +02:00
Philipp Krones
f67f72695a Merge commit 'c9139bd546' into clippy-subtree-update 2024-05-30 10:49:05 +02:00
Philipp Krones
4363278c73 Merge commit '2efebd2f0c' into clippy-subtree-update 2024-05-21 10:39:30 -07:00
Philipp Krones
80c6f8ff7b Merge commit '20b085d500' into clippy-subtree-update 2024-05-02 17:26:44 +02:00
Philipp Krones
0ae4a048c6 Merge commit '9725c4a162' into clippy-subtree-update 2024-04-04 19:52:55 +02:00
Philipp Krones
aa220c7ee7 Merge commit '26ac6aab02' 2024-01-11 17:27:03 +01:00
Philipp Krones
6246f0446a Merge commit 'edb720b199' into clippyup 2023-11-16 19:13:24 +01:00
Mahdi Dibaiee
fdb2e363d3 refactor(rustc_middle): Substs -> GenericArg 2023-07-14 13:27:35 +01:00
Kyle Matsuda
98c4a49db8 remove bound_type_of query; make type_of return EarlyBinder; change type_of in metadata 2023-02-16 17:05:56 -07:00
Kyle Matsuda
f0565c939e change usages of type_of to bound_type_of 2023-02-16 17:01:52 -07:00
Oli Scherer
e3a739a115 s/eval_usize/eval_target_usize/ for clarity 2023-02-14 08:51:19 +00:00
Takayuki Maeda
4bcaddeeb2 separate the receiver from arguments in HIR under /clippy 2022-09-05 22:25:57 +09:00
flip1995
d1b087fdee Merge commit 'dc5423ad44' into clippyup 2022-03-14 12:02:53 +01:00
Nicholas Nethercote
5fa961b951 Overhaul TyS and Ty.
Specifically, change `Ty` from this:
```
pub type Ty<'tcx> = &'tcx TyS<'tcx>;
```
to this
```
pub struct Ty<'tcx>(Interned<'tcx, TyS<'tcx>>);
```
There are two benefits to this.
- It's now a first class type, so we can define methods on it. This
  means we can move a lot of methods away from `TyS`, leaving `TyS` as a
  barely-used type, which is appropriate given that it's not meant to
  be used directly.
- The uniqueness requirement is now explicit, via the `Interned` type.
  E.g. the pointer-based `Eq` and `Hash` comes from `Interned`, rather
  than via `TyS`, which wasn't obvious at all.

Much of this commit is boring churn. The interesting changes are in
these files:
- compiler/rustc_middle/src/arena.rs
- compiler/rustc_middle/src/mir/visit.rs
- compiler/rustc_middle/src/ty/context.rs
- compiler/rustc_middle/src/ty/mod.rs

Specifically:
- Most mentions of `TyS` are removed. It's very much a dumb struct now;
  `Ty` has all the smarts.
- `TyS` now has `crate` visibility instead of `pub`.
- `TyS::make_for_test` is removed in favour of the static `BOOL_TY`,
  which just works better with the new structure.
- The `Eq`/`Ord`/`Hash` impls are removed from `TyS`. `Interned`s impls
  of `Eq`/`Hash` now suffice. `Ord` is now partly on `Interned`
  (pointer-based, for the `Equal` case) and partly on `TyS`
  (contents-based, for the other cases).
- There are many tedious sigil adjustments, i.e. adding or removing `*`
  or `&`. They seem to be unavoidable.
2022-02-15 16:03:24 +11:00
Cameron Steffen
82f613ee3b Remove a span from hir::ExprKind::MethodCall 2022-01-21 07:48:10 -06:00
flip1995
97ab44ca97 Merge commit '0eff589afc' into clippyup 2021-12-30 15:10:43 +01:00
flip1995
8fea1d94f3 Merge commit 'a5d597637d' into clippyup 2021-12-06 12:33:31 +01:00
Cameron Steffen
e165c12932 Make diangostic item names consistent 2021-10-02 19:38:19 -05:00
flip1995
091ed44b50 Merge commit '27afd6ade4' into clippyup 2021-09-08 16:31:47 +02:00
flip1995
ae72f1adb9 Merge commit '7c7683c8ef' into clippyup 2021-04-27 16:55:11 +02:00
flip1995
f6d1f368db Merge commit 'b40ea209e7' into clippyup 2021-04-08 17:50:13 +02:00
flip1995
9f6b5de7de Merge commit '0e87918536' into clippyup 2021-03-25 19:29:11 +01:00