about summary refs log tree commit diff
path: root/compiler/rustc_const_eval/src/util
AgeCommit message (Collapse)AuthorLines
2023-12-10Revert "Don't print host effect param in pretty path_generic_args"Deadbeef-1/+0
This reverts commit f1bf874fb13703d706fc8184407c6df12555d8e9.
2023-12-09Don't print host effect param in pretty path_generic_argsMichael Goulet-0/+1
2023-10-31Turn const_caller_location from a query to a hookOli Scherer-5/+8
2023-10-28interpret: call caller_location logic the same way codegen does, and share ↵Ralf Jung-0/+64
some code
2023-10-21Make `ty::print::Printer` take `&mut self` instead of `self`Nilstrieb-37/+39
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-20s/Generator/Coroutine/Oli Scherer-2/+2
2023-10-17Remove `Print::Error`Nilstrieb-1/+1
All printing goes through `fmt::Error` now.
2023-10-17Remove `Printer::Error`Nilstrieb-19/+17
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-17Remove `Print::Output`Nilstrieb-1/+1
Now that `Printer` doesn't have subprinters anymore, the output of a printing operation is always the same.
2023-10-17Remove "subprinter" types from `Printer`Nilstrieb-18/+12
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-07Auto merge of #115583 - RalfJung:packed-unsized, r=lcnrbors-1/+9
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-02have better explanation for `relate_types`ouz-a-3/+3
2023-10-02change is_subtype to relate_typesouz-a-5/+11
2023-09-23Remove GeneratorWitness and rename GeneratorWitnessMIR.Camille GILLOT-2/+1
2023-09-06still accept references to u8 slices and str in packed fieldsRalf Jung-2/+8
2023-09-05fix detecting references to packed unsized fieldsRalf Jung-1/+3
2023-09-04interpret: make MemPlace, Place, Operand types private to the interpreterRalf Jung-1/+1
2023-08-24MIR validation: reject in-place argument/return for packed fieldsRalf Jung-2/+3
2023-07-27Turns out opaque types can have hidden types registered during mir validationOli Scherer-6/+9
2023-07-21Double check that hidden types match the expected hidden typeOli Scherer-3/+8
2023-07-14refactor(rustc_middle): Substs -> GenericArgMahdi Dibaiee-7/+6
2023-07-01Put `LayoutError` behind reference to shrink resultNilstrieb-3/+3
`LayoutError` is 24 bytes, which is bigger than the `Ok` types, so let's shrink that.
2023-06-24Add enum for `can_access_statics` booleanNilstrieb-3/+2
`/*can_access_statics:*/ false` is one of the ways to do this, but not the one I like.
2023-06-19Dedup some type checks in the MIR validatorScott McMurray-0/+26
2023-06-16Add `AliasKind::Weak` for type aliases.Oli Scherer-0/+1
Only use it when the type alias contains an opaque type. Also does wf-checking on such type aliases.
2023-05-31Remove const eval limit and implement an exponential backoff lint insteadOli Scherer-6/+2
2023-05-25Move DefiningAnchorMichael Goulet-2/+2
2023-05-22properly pretty-print inherent projectionsLeón Orell Valerian Liehr-1/+2
2023-04-16Move some utils out of `rustc_const_eval`Nilstrieb-214/+0
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-03-02Allow checking whether a type allows being uninitializedNilstrieb-1/+4
This is useful for clippy and for the future `MaybeUninit::assume_init` panics.
2023-02-27Unify all validity check intrinsicsNilstrieb-12/+22
Also merges the inhabitedness check into the query to further unify the code paths.
2023-02-23Unify validity checks into a single queryNilstrieb-3/+3
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-14Make permit_uninit/zero_init fallibleMichael Goulet-23/+17
2023-02-14Don't ICE in might_permit_raw_init if reference is polymorphicMichael Goulet-2/+7
2023-02-02Stop deaggegating MIR.Camille GILLOT-79/+0
2023-01-27Introduce GeneratorWitnessMIR.Camille GILLOT-0/+1
2023-01-26add method_substs to CallKindKyle Matsuda-1/+2
2023-01-23Thread a ParamEnv down to might_permit_raw_initBen Kimock-1/+2
2023-01-09Assert defining anchor is set in take_opaque_typesMichael Goulet-1/+1
2022-12-15Make alignment checks a future incompat lintOli Scherer-2/+2
2022-12-14Ensure no one constructs `AliasTy`s themselvesOli Scherer-1/+1
2022-12-14Auto merge of #104986 - compiler-errors:opaques, r=oli-obkbors-2/+1
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-13Combine identical alias armsMichael Goulet-2/+1
2022-12-13Combine projection and opaque into aliasMichael Goulet-2/+2
2022-12-13squash OpaqueTy and ProjectionTy into AliasTyMichael Goulet-2/+2
2022-12-13ProjectionTy.item_def_id -> ProjectionTy.def_idMichael Goulet-1/+1
2022-12-13Use ty::OpaqueTy everywhereMichael Goulet-1/+1
2022-12-13Clarify what "this" meansOli Scherer-15/+3
2022-12-10compiler: remove unnecessary imports and qualified pathsKaDiWa-1/+0
2022-11-28Make ObligationCtxt::normalize take cause by borrowMichael Goulet-2/+2