diff options
| author | bors <bors@rust-lang.org> | 2022-12-14 01:19:24 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-12-14 01:19:24 +0000 |
| commit | 918d0ac38e8c3bcf4fb5ee2241fb14979c73c312 (patch) | |
| tree | 927355e933124955c8e2411e2ca16d31a962dfef /compiler/rustc_parse/src/errors.rs | |
| parent | 21ee03e0621c70b894e1bfdd8c82ba5aeaabc812 (diff) | |
| parent | 99417d54afe7a9f8a74c9eea4338d039f36b9a45 (diff) | |
| download | rust-918d0ac38e8c3bcf4fb5ee2241fb14979c73c312.tar.gz rust-918d0ac38e8c3bcf4fb5ee2241fb14979c73c312.zip | |
Auto merge of #104986 - compiler-errors:opaques, r=oli-obk
Combine `ty::Projection` and `ty::Opaque` into `ty::Alias`
Implements https://github.com/rust-lang/types-team/issues/79.
This PR consolidates `ty::Projection` and `ty::Opaque` into a single `ty::Alias`, with an `AliasKind` and `AliasTy` type (renamed from `ty::ProjectionTy`, which is the inner data of `ty::Projection`) defined as so:
```
enum AliasKind {
Projection,
Opaque,
}
struct AliasTy<'tcx> {
def_id: DefId,
substs: SubstsRef<'tcx>,
}
```
Since we don't have access to `TyCtxt` in type flags computation, and because repeatedly calling `DefKind` on the def-id is expensive, these two types are distinguished with `ty::AliasKind`, conveniently glob-imported into `ty::{Projection, Opaque}`. For example:
```diff
match ty.kind() {
- ty::Opaque(..) =>
+ ty::Alias(ty::Opaque, ..) => {}
_ => {}
}
```
This PR also consolidates match arms that treated `ty::Opaque` and `ty::Projection` identically.
r? `@ghost`
Diffstat (limited to 'compiler/rustc_parse/src/errors.rs')
0 files changed, 0 insertions, 0 deletions
