about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/infer
AgeCommit message (Collapse)AuthorLines
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
2023-06-13opportunistically resolve regionsMichael Goulet-8/+33
2023-06-05Remove redundant InferCtxtExt::fresh_item_substsMichael Goulet-1/+0
2023-05-29Rename `tcx.mk_re_*` => `Region::new_*`Maybe Waffle-1/+1
2023-05-10Use OpaqueTypeKey in query responseMichael Goulet-1/+1
2023-04-17Rollup merge of #110386 - nnethercote:clean-up-traversal-macros, r=lcnrMatthias Krüger-4/+2
Clean up traversal macros The declarative macros relating to type folding and visiting can be simplified. r? ``@lcnr``
2023-04-16Rollup merge of #109665 - fee1-dead-contrib:rm-remap-queries, r=oli-obkfee1-dead-8/+0
Remove `remap_env_constness` in queries This removes some of the complexities with const traits. #88119 used to be caused by this but was fixed by `param_env = param_env.without_const()`.
2023-04-16Simplify `CloneLiftImpls` and `TrivialTypeTraversalImpls`.Nicholas Nethercote-4/+2
They both allow for a lifetime other than `'tcx`, but this isn't needed.
2023-04-10Fix typos in compilerDaniPopes-1/+1
2023-04-10prioritize param-env candidateslcnr-0/+12
2023-04-08Remove `remap_env_constness` in queriesDeadbeef-8/+0
2023-04-06Remove index from BrAnonJack Huey-1/+1
2023-04-06Remove expect_anon and expect_anon_placeholder in favor of varJack Huey-6/+4
2023-04-06Use BoundTy and BoundRegion instead of kind of PlaceholderTy and ↵Jack Huey-3/+5
PlaceholderRegion
2023-04-05Tweak debug outputs to make debugging new solver easierMichael Goulet-1/+1
2023-03-08Auto merge of #108121 - aliemjay:resolve-var-region, r=lcnrbors-4/+33
always resolve to universal regions if possible `RegionConstraintCollector::opportunistic_resolve_var`, which is used in canonicalization and projection logic, doesn't resolve the region var to an equal universal region. So if we have equated `'static == '1 == '2`, it doesn't resolve `'1` or `'2` to `'static`. Now it does! Addresses review comment https://github.com/rust-lang/rust/pull/107376#discussion_r1093233687. r? `@lcnr`
2023-03-08prefer universal from lower universeAli MJ Al-Nasrawy-1/+17
In case a variable is unified with two universal regions from different universes, use the one with the lower universe as it has a higher chance of being compatible with the variable.
2023-03-08address review commentAli MJ Al-Nasrawy-3/+16