about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/infer
AgeCommit message (Collapse)AuthorLines
2025-09-08inline `CanonicalTyVarKind`lcnr-1/+0
2025-07-15Add alias for ArgOutlivesPredicateMichael Goulet-3/+2
2025-07-15Consider outlives assumptions when proving auto traits for coroutine interiorsMichael Goulet-3/+8
2025-05-23yeet `CanonicalVarInfo`lcnr-3/+3
2025-04-15Split TypeFolder and FallibleTypeFolderMichael Goulet-9/+0
2025-02-06Clean up trivial traversal/lift impl generator macro calls.Nicholas Nethercote-4/+0
We have four macros for generating trivial traversal (fold/visit) and lift impls. - `rustc_ir::TrivialTypeTraversalImpls` - `rustc_middle::TrivialTypeTraversalImpls` - `rustc_middle::TrivialLiftImpls` - `rustc_middle::TrivialTypeTraversalAndLiftImpls` The first two are very similar. The last one just combines the second and third one. The macros themselves are ok, but their use is a mess. This commit does the following. - Removes types that no longer need a lift and/or traversal impl from the macro calls. - Consolidates the macro calls into the smallest number of calls possible, with each one mentioning as many types as possible. - Orders the types within those macro calls alphabetically, and makes the module qualification more consistent. - Eliminates `rustc_middle::mir::type_foldable`, because the macro calls were merged and the manual `TypeFoldable` impls are better placed in `structural_impls.rs`, alongside all the other ones. This makes the code more concise. Moving forward, it also makes it more obvious where new types should be added.
2025-02-02Move `unify_key` module.Nicholas Nethercote-171/+0
From `rustc_middle::infer` to `rustc_infer::infer`. Because everything in it is only used within `rustc_infer`, and no longer needs to be `pub`. Plus it's always good to make the huge `rustc_middle` crate smaller.
2025-02-02Remove unused `ToType` trait.Nicholas Nethercote-5/+1
2024-12-20remove non-borrowck member constraintslcnr-35/+1
2024-10-24Remove associated type based effects logicMichael Goulet-67/+0
2024-10-17move `defining_opaque_types` out of `Canonical`lcnr-1/+1
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-1/+1
2024-07-29Reformat `use` declarations.Nicholas Nethercote-8/+10
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-06-01Simplify IntVarValue/FloatVarValueMichael Goulet-15/+1
2024-05-21Uplift OutlivesPredicate, remove a bunch of unnecessary associated types ↵Michael Goulet-2/+2
from Interner
2024-05-18Uplift GenericArgKind, CanonicalVarValues, QueryInputMichael Goulet-149/+6
and make NestedGoals generic
2024-04-29Remove `extern crate rustc_macros` from `rustc_middle`.Nicholas Nethercote-1/+2
2024-04-15nitsMichael Goulet-1/+3
2024-04-15Remove ConstVariableOriginKindMichael Goulet-10/+2
2024-04-08Ensure the canonical_param_env_cache does not contain inconsistent ↵Oli Scherer-5/+10
information about the defining anchor
2024-04-08Eliminate `DefiningAnchor` now that is just a single-variant enumOli Scherer-4/+4
2024-04-08Pass list of defineable opaque types into canonical queriesOli Scherer-6/+5
2024-04-03rustc_index: Add a `ZERO` constant to index typesVadim Petrochenkov-1/+1
It is commonly used.
2024-02-22add commentlcnr-1/+8
2024-02-22region unification update universe of region varslcnr-44/+38
2024-02-12Dejargnonize substShoyu Vanilla-1/+1
2024-02-05cleanup effect var handlinglcnr-19/+23
2024-01-16don't store const var origins for known varslcnr-19/+10
2023-12-15NFC: do not clone types that are copyMatthias Krüger-2/+2
2023-12-14make infcx optional in canonicalizerAli MJ Al-Nasrawy-2/+10
This doesn't change behavior. It should prevent unintentional resolution of inference variables during canonicalization, which previously caused a soundness bug. See PR description for more.
2023-12-13fix small perf regressionsAli MJ Al-Nasrawy-1/+11
2023-12-13don't store OriginalQueryValues::universe_mapAli MJ Al-Nasrawy-4/+11
ParamEnv is canonicalized in *queries input* rather than query response. In such case we don't "preserve universes" of canonical variable. This means that `universe_map` always has the default value, which is wasteful to store in the cache.
2023-12-13global param_env canonicalization cacheAli MJ Al-Nasrawy-0/+37
2023-11-21Uplift CanonicalVarInfo and friendsMichael Goulet-153/+4
2023-11-14finish `RegionKind` renamelcnr-2/+2
- `ReFree` -> `ReLateParam` - `ReEarlyBound` -> `ReEarlyParam`
2023-11-13rename `ReLateBound` to `ReBound`lcnr-6/+5
other changes: - `Region::new_late_bound` -> `Region::new_bound` - `Region::is_late_bound` -> `Region::is_bound`
2023-11-04No lifetime on PlaceholderConstMichael Goulet-1/+1
2023-10-25Uplift Canonical to rustc_type_irMichael Goulet-74/+6
2023-10-24Get rid of 'tcx on ConstVid, EffectVidMichael Goulet-8/+32
2023-10-13Format all the let chains in compilerMichael Goulet-1/+1
2023-09-24Remove span from BrAnon.Camille GILLOT-1/+1
2023-09-18Remove more unused `Lift` impls.Nicholas Nethercote-1/+1
2023-09-18Remove unused `Lift` derives.Nicholas Nethercote-5/+5
I found these by commenting out all `Lift` derives and then adding back the ones that were necessary to successfully compile.
2023-09-11Rollup merge of #115727 - fee1-dead-contrib:effect-fallback, r=oli-obkMatthias Krüger-16/+78
Implement fallback for effect param r? `@oli-obk` or `@lcnr` tracking issue for this ongoing work: https://github.com/rust-lang/rust/issues/110395
2023-09-11add `is_host_effect` to `GenericParamDefKind::Const` and address reviewDeadbeef-1/+0
2023-09-11Disentangle `Debug` and `Display` for `Ty`.Nicholas Nethercote-0/+11
The `Debug` impl for `Ty` just calls the `Display` impl for `Ty`. This is surprising and annoying. In particular, it means `Debug` doesn't show as much information as `Debug` for `TyKind` does. And `Debug` is used in some user-facing error messages, which seems bad. This commit changes the `Debug` impl for `Ty` to call the `Debug` impl for `TyKind`. It also does a number of follow-up changes to preserve existing output, many of which involve inserting `with_no_trimmed_paths!` calls. It also adds `Display` impls for `UserType` and `Canonical`. Some tests have changes to expected output: - Those that use the `rustc_abi(debug)` attribute. - Those that use the `EMIT_MIR` annotation. In each case the output is slightly uglier than before. This isn't ideal, but it's pretty weird (particularly for the attribute) that the output is using `Debug` in the first place. They're fairly obscure attributes (I hadn't heard of them) so I'm not worried by this. For `async-is-unwindsafe.stderr`, there is one line that now lacks a full path. This is a consistency improvement, because all the other mentions of `Context` in this test lack a path.
2023-09-10Implement fallback for effect paramDeadbeef-16/+79
2023-07-14refactor(rustc_middle): Substs -> GenericArgMahdi Dibaiee-4/+4
2023-07-05Move `TyCtxt::mk_x` to `Ty::new_x` where applicableBoxy-4/+5
2023-07-04Replace `mk_const` with `Const::new_x` methodsBoxy-6/+7