summary refs log tree commit diff
path: root/compiler/rustc_traits/src
AgeCommit message (Collapse)AuthorLines
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
2023-04-06Use BoundTy and BoundRegion instead of kind of PlaceholderTy and ↵Jack Huey-13/+26
PlaceholderRegion
2023-04-01fix clippy::iter_kv_mapMatthias Krüger-2/+1
2023-03-23Rename AliasEq -> AliasRelateMichael Goulet-7/+7
2023-02-24Add `mk_canonical_var_infos_from_iter`.Nicholas Nethercote-20/+17
It's missing, and is useful in two places.
2023-02-24Rename `mk_{ty,region}` as `mk_{ty,region}_from_kind`.Nicholas Nethercote-1/+1
To discourage accidental use -- there are more specific `mk_*` functions for all `Ty` and `Region` kinds.
2023-02-24Rename many interner functions.Nicholas Nethercote-3/+5
(This is a large commit. The changes to `compiler/rustc_middle/src/ty/context.rs` are the most important ones.) The current naming scheme is a mess, with a mix of `_intern_`, `intern_` and `mk_` prefixes, with little consistency. In particular, in many cases it's easy to use an iterator interner when a (preferable) slice interner is available. The guiding principles of the new naming system: - No `_intern_` prefixes. - The `intern_` prefix is for internal operations. - The `mk_` prefix is for external operations. - For cases where there is a slice interner and an iterator interner, the former is `mk_foo` and the latter is `mk_foo_from_iter`. Also, `slice_interners!` and `direct_interners!` can now be `pub` or non-`pub`, which helps enforce the internal/external operations division. It's not perfect, but I think it's a clear improvement. The following lists show everything that was renamed. slice_interners - const_list - mk_const_list -> mk_const_list_from_iter - intern_const_list -> mk_const_list - substs - mk_substs -> mk_substs_from_iter - intern_substs -> mk_substs - check_substs -> check_and_mk_substs (this is a weird one) - canonical_var_infos - intern_canonical_var_infos -> mk_canonical_var_infos - poly_existential_predicates - mk_poly_existential_predicates -> mk_poly_existential_predicates_from_iter - intern_poly_existential_predicates -> mk_poly_existential_predicates - _intern_poly_existential_predicates -> intern_poly_existential_predicates - predicates - mk_predicates -> mk_predicates_from_iter - intern_predicates -> mk_predicates - _intern_predicates -> intern_predicates - projs - intern_projs -> mk_projs - place_elems - mk_place_elems -> mk_place_elems_from_iter - intern_place_elems -> mk_place_elems - bound_variable_kinds - mk_bound_variable_kinds -> mk_bound_variable_kinds_from_iter - intern_bound_variable_kinds -> mk_bound_variable_kinds direct_interners - region - intern_region (unchanged) - const - mk_const_internal -> intern_const - const_allocation - intern_const_alloc -> mk_const_alloc - layout - intern_layout -> mk_layout - adt_def - intern_adt_def -> mk_adt_def_from_data (unusual case, hard to avoid) - alloc_adt_def(!) -> mk_adt_def - external_constraints - intern_external_constraints -> mk_external_constraints Other - type_list - mk_type_list -> mk_type_list_from_iter - intern_type_list -> mk_type_list - tup - mk_tup -> mk_tup_from_iter - intern_tup -> mk_tup
2023-02-22Rename ty_error_with_guaranteed to ty_error, ty_error to ty_error_miscMichael Goulet-1/+1
2023-02-22Remove type-traversal trait aliasesAlan Egerton-14/+19
2023-02-17Add `Clause::ConstArgHasType` variantBoxy-0/+8
2023-02-16remove bound_type_of query; make type_of return EarlyBinder; change type_of ↵Kyle Matsuda-6/+6
in metadata