ouz-a
5d753abb30
have better explanation for relate_types
2023-10-02 23:39:45 +03:00
ouz-a
6f0c5ee2d4
change is_subtype to relate_types
2023-10-02 23:39:45 +03:00
Camille GILLOT
44ac8dcc71
Remove GeneratorWitness and rename GeneratorWitnessMIR.
2023-09-23 13:47:30 +00:00
Ralf Jung
fa5f13775a
interpret: make MemPlace, Place, Operand types private to the interpreter
2023-09-04 17:53:38 +02:00
Ralf Jung
739144fc5b
MIR validation: reject in-place argument/return for packed fields
2023-08-24 11:38:19 +02:00
Oli Scherer
99a9a63ca6
Turns out opaque types can have hidden types registered during mir validation
2023-07-27 08:23:06 +00:00
Oli Scherer
44e21503a8
Double check that hidden types match the expected hidden type
2023-07-21 13:19:36 +00:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
Nilstrieb
3019c1cb2a
Put LayoutError behind reference to shrink result
...
`LayoutError` is 24 bytes, which is bigger than the `Ok` types, so let's
shrink that.
2023-07-01 21:16:25 +02:00
Nilstrieb
70b6a74c3c
Add enum for can_access_statics boolean
...
`/*can_access_statics:*/ false` is one of the ways to do this, but not
the one I like.
2023-06-24 20:40:40 +00:00
Scott McMurray
c780e55995
Dedup some type checks in the MIR validator
2023-06-19 01:47:03 -07:00
Oli Scherer
f3b7dd6388
Add AliasKind::Weak for type aliases.
...
Only use it when the type alias contains an opaque type.
Also does wf-checking on such type aliases.
2023-06-16 19:39:48 +00:00
Oli Scherer
05eae08233
Remove const eval limit and implement an exponential backoff lint instead
2023-05-31 10:24:17 +00:00
Michael Goulet
a2d7ffc635
Move DefiningAnchor
2023-05-25 03:21:21 +00:00
León Orell Valerian Liehr
778abc7a00
properly pretty-print inherent projections
2023-05-22 22:39:45 +02:00
Nilstrieb
2109fe4e4e
Move some utils out of rustc_const_eval
...
This allows us to get rid of the `rustc_const_eval->rustc_borrowck`
dependency edge which was delaying the compilation of borrowck.
The added utils in `rustc_middle` are small and should not affect
compile times there.
2023-04-16 12:05:54 +02:00
Nilstrieb
10a69de5fd
Allow checking whether a type allows being uninitialized
...
This is useful for clippy and for the future `MaybeUninit::assume_init`
panics.
2023-03-02 18:33:48 +00:00
Nilstrieb
5f593da4e6
Unify all validity check intrinsics
...
Also merges the inhabitedness check into the query to further unify the
code paths.
2023-02-27 13:30:44 +00:00
Nilstrieb
025d2a147f
Unify validity checks into a single query
...
Previously, there were two queries to check whether a type allows the
0x01 or zeroed bitpattern.
I am planning on adding a further initness to check, truly uninit for
MaybeUninit, which would make this three queries. This seems overkill
for such a small feature, so this PR unifies them into one.
2023-02-23 18:42:36 +00:00
Michael Goulet
b096f0e0f0
Make permit_uninit/zero_init fallible
2023-02-14 22:37:30 +00:00
Michael Goulet
087a0136d0
Don't ICE in might_permit_raw_init if reference is polymorphic
2023-02-14 01:03:06 +00:00
Camille GILLOT
134d819072
Stop deaggegating MIR.
2023-02-02 23:20:29 +00:00
Camille GILLOT
1974b6b68d
Introduce GeneratorWitnessMIR.
2023-01-27 18:58:44 +00:00
Kyle Matsuda
4a7d0e9754
add method_substs to CallKind
2023-01-26 20:28:31 -07:00
Ben Kimock
5bfad5cc85
Thread a ParamEnv down to might_permit_raw_init
2023-01-23 19:25:10 -05:00
Michael Goulet
f769d34291
Assert defining anchor is set in take_opaque_types
2023-01-09 18:14:28 +00:00
Oli Scherer
d66824dbc4
Make alignment checks a future incompat lint
2022-12-15 16:07:28 +00:00
Oli Scherer
a5cd3bde95
Ensure no one constructs AliasTys themselves
2022-12-14 15:36:39 +00:00
bors
918d0ac38e
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`
2022-12-14 01:19:24 +00:00
Michael Goulet
96cb18e864
Combine identical alias arms
2022-12-13 17:48:55 +00:00
Michael Goulet
61adaf8187
Combine projection and opaque into alias
2022-12-13 17:48:55 +00:00
Michael Goulet
c13bd83528
squash OpaqueTy and ProjectionTy into AliasTy
2022-12-13 17:40:27 +00:00
Michael Goulet
5c6afb850c
ProjectionTy.item_def_id -> ProjectionTy.def_id
2022-12-13 17:34:44 +00:00
Michael Goulet
7f3af72606
Use ty::OpaqueTy everywhere
2022-12-13 17:29:26 +00:00
Oli Scherer
063b1675b2
Clarify what "this" means
2022-12-13 09:51:03 +00:00
KaDiWa
9bc69925cb
compiler: remove unnecessary imports and qualified paths
2022-12-10 18:45:34 +01:00
Michael Goulet
1e236acd05
Make ObligationCtxt::normalize take cause by borrow
2022-11-28 17:35:40 +00:00
Maybe Waffle
1d42936b18
Prefer doc comments over //-comments in compiler
2022-11-27 11:19:04 +00:00
Maybe Waffle
b80356a5ab
Use tcx.require_lang_item instead of unwrapping
2022-11-22 17:19:19 +00:00
Matthias Krüger
844e3fb928
Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr
...
Add `PolyExistentialPredicate` type alias
Wrapping `ExistentialPredicate`s in a binder is very common, and this alias already exists for the `PolyExistential{TraitRef,Projection}` types.
2022-11-21 14:11:11 +01:00
Michael Goulet
c36ff28d42
drive-by: PolyExistentialPredicate
2022-11-19 04:04:27 +00:00
lcnr
b2e6d08e3f
use ocx type relation routines
2022-11-15 14:13:47 +01:00
lcnr
f5f67618e2
add comment about opaque types
2022-11-15 13:50:13 +01:00
lcnr
6aa611a84c
mv utility methods into separate module
2022-11-15 13:50:13 +01:00
Michael Goulet
e24df2778f
Format dyn Trait better in type_name intrinsic
2022-11-01 20:41:47 +00:00
Yuki Okushi
0f40e95b2e
Rollup merge of #103798 - RalfJung:type_name, r=oli-obk
...
interpret: move type_name implementation to an interpreter-independent helper file
This should avoid pinging rust-lang/miri each time that file changes, which is really not necessary.
r? `@oli-obk`
2022-11-01 12:03:43 +09:00
Ralf Jung
fa2aa1cedb
interpret: move type_name implementation to an interpreter-independent helper file
2022-10-31 11:04:03 +01:00
Cameron Steffen
a6180ede5c
Simplify lang item groups
2022-10-29 16:04:10 -05:00
Ralf Jung
a0131f0a36
change might_permit_raw_init to fully detect LLVM UB, but not more than that
2022-10-05 09:22:50 +02:00
bors
d6b96b61e7
Auto merge of #100064 - RalfJung:disaligned, r=petrochenkov
...
fix is_disaligned logic for nested packed structs
https://github.com/rust-lang/rust/pull/83605 broke the `is_disaligned` logic by bailing out of the loop in `is_within_packed` early. This PR fixes that problem and adds suitable tests.
Fixes https://github.com/rust-lang/rust/issues/99838
2022-08-03 16:09:56 +00:00