about summary refs log tree commit diff
path: root/compiler/rustc_traits/src
AgeCommit message (Collapse)AuthorLines
2023-12-07add unused `NormalizesTo` predicatelcnr-0/+1
2023-11-22Auto merge of #118120 - compiler-errors:closure-kind, r=lcnrbors-1/+0
Remove `PredicateKind::ClosureKind` We don't need the `ClosureKind` predicate kind -- instead, `Fn`-family trait goals are left as ambiguous, and we only need to make progress on `FnOnce` projection goals for inference purposes. This is similar to how we do confirmation of `Fn`-family trait and projection goals in the new trait solver, which also doesn't use the `ClosureKind` predicate. Some hacky logic is added in the second commit so that we can keep the error messages the same.
2023-11-21Fix `clippy::needless_borrow` in the compilerNilstrieb-1/+1
`x clippy compiler -Aclippy::all -Wclippy::needless_borrow --fix`. Then I had to remove a few unnecessary parens and muts that were exposed now.
2023-11-21Remove ClosureKind predicate kindMichael Goulet-1/+0
2023-11-13Remove `-Zperf-stats`.Nicholas Nethercote-9/+0
The included measurements have varied over the years. At one point there were quite a few more, but #49558 deleted a lot that were no longer used. Today there's just four, and it's a motley collection that doesn't seem particularly valuable. I think it has been well and truly subsumed by self-profiling, which collects way more data.
2023-11-03Auto merge of #117507 - nnethercote:rustc_span, r=Nilstriebbors-1/+1
`rustc_span` cleanups Just some things I found while looking over this crate. r? `@oli-obk`
2023-11-02dropck_outlives check generator witness needs_droplcnr-1/+2
2023-11-02Minimize `pub` usage in `source_map.rs`.Nicholas Nethercote-1/+1
Most notably, this commit changes the `pub use crate::*;` in that file to `use crate::*;`. This requires a lot of `use` items in other crates to be adjusted, because everything defined within `rustc_span::*` was also available via `rustc_span::source_map::*`, which is bizarre. The commit also removes `SourceMap::span_to_relative_line_string`, which is unused.
2023-09-13Detect cycle errors hidden by opaques during monomorphizationMichael Goulet-1/+25
2023-07-14refactor(rustc_middle): Substs -> GenericArgMahdi Dibaiee-7/+7
2023-07-06get rid of a bit more calls to poly_selectMichael Goulet-2/+2
2023-07-06Separate select calls that don't need a binderMichael Goulet-1/+1
2023-07-03remove TypeWellFormedFromEnvMichael Goulet-2/+1
2023-07-03Remove chalk from the compilerMichael Goulet-2203/+1
2023-07-01Update chalkNilstrieb-0/+2
2023-06-27Remove unnecessary DefineOpaqueTypes::Bubble from codegenMichael Goulet-13/+2
2023-06-26TypeWellFormedInEnvMichael Goulet-9/+10
2023-06-26Migrate predicates_of and caller_bounds to ClauseMichael Goulet-44/+31
2023-06-23Rollup merge of #112963 - oli-obk:tait_solver_decoupling, r=compiler-errorsMichael Goulet-17/+6
Stop bubbling out hidden types from the eval obligation queries r? `@compiler-errors` I don't know why these were added, but they are not needed anymore. The relevant test is unaffected and I didn't see anything interesting in logging that would have justified it. This PR has no effect on the new solver behaviour of https://github.com/rust-lang/rust/blob/cf2dff2b1e3fa55fa5415d524200070d0d7aacfe/tests/ui/impl-trait/issue-99642.rs (which is overflow) and https://github.com/rust-lang/rust/blob/cf2dff2b1e3fa55fa5415d524200070d0d7aacfe/tests/ui/impl-trait/issue-99642-2.rs (which is "unstable certainty ICE")
2023-06-23Stop bubbling out hidden types from the eval obligation queriesOli Scherer-17/+6
2023-06-22Migrate item_bounds to ty::ClauseMichael Goulet-2/+4
2023-06-19s/Clause/ClauseKindMichael Goulet-35/+35
2023-06-17Move ConstEvaluatable to ClauseMichael Goulet-5/+5
2023-06-17Move WF goal to clauseMichael Goulet-5/+5
2023-06-16Add `AliasKind::Weak` for type aliases.Oli Scherer-1/+34
Only use it when the type alias contains an opaque type. Also does wf-checking on such type aliases.
2023-06-14s/drain_filter/extract_if/ for Vec, Btree{Map,Set} and LinkedListThe 8472-1/+0
2023-06-06Make TraitEngine::new use the right solver, add compare modeMichael Goulet-1/+1
2023-06-06New trait solver is a property of inference contextMichael Goulet-1/+1
2023-05-29Rename `tcx.mk_re_*` => `Region::new_*`Maybe Waffle-11/+15
2023-05-28Make EarlyBinder's inner value private; and fix all of the resulting errorsKyle Matsuda-1/+1
2023-05-27Uplift complex type ops back into typeck so we can call them locallyMichael Goulet-540/+15
2023-05-25Fallible<_> -> Result<_, NoSolution>Michael Goulet-4/+4
2023-05-25Prepopulate opaques in canonical inputMichael Goulet-0/+1
2023-05-25Move DefiningAnchorMichael Goulet-5/+6
2023-05-25Pull out logic from #111131, plus some new logic in ↵Michael Goulet-1/+1
EvalCtxt::normalize_opaque_type Co-authored-by: lcnr <rust@lcnr.de>
2023-05-15Move expansion of query macros in rustc_middle to rustc_middle::queryJohn Kåre Alsaker-8/+8
2023-05-04IAT: Introduce AliasKind::InherentLeón Orell Valerian Liehr-1/+29
2023-05-03Restrict `From<S>` for `{D,Subd}iagnosticMessage`.Nicholas Nethercote-2/+2
Currently a `{D,Subd}iagnosticMessage` can be created from any type that impls `Into<String>`. That includes `&str`, `String`, and `Cow<'static, str>`, which are reasonable. It also includes `&String`, which is pretty weird, and results in many places making unnecessary allocations for patterns like this: ``` self.fatal(&format!(...)) ``` This creates a string with `format!`, takes a reference, passes the reference to `fatal`, which does an `into()`, which clones the reference, doing a second allocation. Two allocations for a single string, bleh. This commit changes the `From` impls so that you can only create a `{D,Subd}iagnosticMessage` from `&str`, `String`, or `Cow<'static, str>`. This requires changing all the places that currently create one from a `&String`. Most of these are of the `&format!(...)` form described above; each one removes an unnecessary static `&`, plus an allocation when executed. There are also a few places where the existing use of `&String` was more reasonable; these now just use `clone()` at the call site. As well as making the code nicer and more efficient, this is a step towards possibly using `Cow<'static, str>` in `{D,Subd}iagnosticMessage::{Str,Eager}`. That would require changing the `From<&'a str>` impls to `From<&'static str>`, which is doable, but I'm not yet sure if it's worthwhile.
2023-04-27rename `needs_infer` to `has_infer`Boxy-1/+1
2023-04-21Changes from reviewKyle Matsuda-11/+6
2023-04-20add EarlyBinder to output of explicit_item_bounds; replace ↵Kyle Matsuda-2/+2
bound_explicit_item_bounds usages; remove bound_explicit_item_bounds query
2023-04-18Don't transmute `&List<GenericArg>` <-> `&List<Ty>`Maybe Waffle-4/+16
2023-04-16Rollup merge of #110345 - nnethercote:rm-Super-impls-for-Region, ↵fee1-dead-4/+4
r=compiler-errors Remove `TypeSuper{Foldable,Visitable}` impls for `Region`. These traits exist so that folders/visitors can recurse into types of interest: binders, types, regions, predicates, and consts. But `Region` is non-recursive and cannot contain other types of interest, so its methods in these traits are trivial. This commit inlines and removes those trivial methods. r? `@compiler-errors`
2023-04-16Rollup merge of #109665 - fee1-dead-contrib:rm-remap-queries, r=oli-obkfee1-dead-0/+1
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-16Remove `TypeSuper{Foldable,Visitable}` impls for `Region`.Nicholas Nethercote-4/+4
These traits exist so that folders/visitors can recurse into types of interest: binders, types, regions, predicates, and consts. But `Region` is non-recursive and cannot contain other types of interest, so its methods in these traits are trivial. This commit inlines and removes those trivial methods.
2023-04-14 explicit adt_dtorck_constraint for ManuallyDroplcnr-1/+3
2023-04-08fix ICEDeadbeef-0/+1
2023-04-06Remove u32 on BoundTyKind::AnonJack Huey-5/+5
2023-04-06Remove index from BrAnonJack Huey-10/+11
2023-04-06Remove expect_anon and expect_anon_placeholder in favor of varJack Huey-9/+7