Deadbeef
d1f4bc5a19
Revert "Don't print host effect param in pretty path_generic_args"
...
This reverts commit f1bf874fb1 .
2023-12-10 10:17:28 +00:00
Michael Goulet
f1bf874fb1
Don't print host effect param in pretty path_generic_args
2023-12-09 17:42:33 +00:00
Oli Scherer
77174d3f29
Turn const_caller_location from a query to a hook
2023-10-31 16:15:18 +00:00
Ralf Jung
351d532a27
interpret: call caller_location logic the same way codegen does, and share some code
2023-10-28 15:40:03 +02:00
Nilstrieb
5acf26b97e
Make ty::print::Printer take &mut self instead of self
...
This simplifies the code by removing all the `self` assignments and
makes the flow of data clearer - always into the printer.
Especially in v0 mangling, which already used `&mut self` in some
places, it gets a lot more uniform.
2023-10-21 11:33:05 +02:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
Nilstrieb
6fc6a6d783
Remove Print::Error
...
All printing goes through `fmt::Error` now.
2023-10-17 18:02:57 +02:00
Nilstrieb
6038888118
Remove Printer::Error
...
It's always a `fmt::Error` except in some cases where it was `!`, but
we're not really winning anything in that case.
2023-10-17 18:02:55 +02:00
Nilstrieb
0b5a4c1adf
Remove Print::Output
...
Now that `Printer` doesn't have subprinters anymore, the output of a
printing operation is always the same.
2023-10-17 18:01:07 +02:00
Nilstrieb
3895f0e9af
Remove "subprinter" types from Printer
...
These are `Self` in almost all printers except one, which can just store
the state as a field instead. This simplifies the printer and allows for
further simplifications, for example using `&mut self` instead of
passing around the printer.
2023-10-17 18:01:05 +02:00
bors
48e24629e9
Auto merge of #115583 - RalfJung:packed-unsized, r=lcnr
...
fix detecting references to packed unsized fields
Fixes https://github.com/rust-lang/rust/issues/115396
This is a breaking change, but permitted as a soundness fix.
2023-10-07 10:57:18 +00:00
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
ad7045e160
still accept references to u8 slices and str in packed fields
2023-09-06 08:32:30 +02:00
Ralf Jung
8b3435c10f
fix detecting references to packed unsized fields
2023-09-05 22:29:51 +02: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