about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/traits
AgeCommit message (Collapse)AuthorLines
2025-01-28Properly check that array length is valid type during built-in unsizing in indexMichael Goulet-0/+3
2025-01-21remove support for the #[start] attributeRalf Jung-3/+0
2025-01-06Add derived causes for host effect predicatesMichael Goulet-17/+72
2025-01-02Remove unused fields from RepeatElementCopy obligationTaylor Cramer-4/+4
2024-12-18Re-export more `rustc_span::symbol` things from `rustc_span`.Nicholas Nethercote-3/+2
`rustc_span::symbol` defines some things that are re-exported from `rustc_span`, such as `Symbol` and `sym`. But it doesn't re-export some closely related things such as `Ident` and `kw`. So you can do `use rustc_span::{Symbol, sym}` but you have to do `use rustc_span::symbol::{Ident, kw}`, which is inconsistent for no good reason. This commit re-exports `Ident`, `kw`, and `MacroRulesNormalizedIdent`, and changes many `rustc_span::symbol::` qualifiers in `compiler/` to `rustc_span::`. This is a 200+ net line of code reduction, mostly because many files with two `use rustc_span` items can be reduced to one.
2024-12-13Suggest using deref in patternsuellenberg-2/+21
Fixes #132784
2024-12-11Arbitrary self types v2: use Receiver traitAdrian Taylor-1/+11
In this new version of Arbitrary Self Types, we no longer use the Deref trait exclusively when working out which self types are valid. Instead, we follow a chain of Receiver traits. This enables methods to be called on smart pointer types which fundamentally cannot support Deref (for instance because they are wrappers for pointers that don't follow Rust's aliasing rules). This includes: * Changes to tests appropriately * New tests for: * The basics of the feature * Ensuring lifetime elision works properly * Generic Receivers * A copy of the method subst test enhanced with Receiver This is really the heart of the 'arbitrary self types v2' feature, and is the most critical commit in the current PR. Subsequent commits are focused on: * Detecting "shadowing" problems, where a smart pointer type can hide methods in the pointee. * Diagnostics and cleanup. Naming: in this commit, the "Autoderef" type is modified so that it no longer solely focuses on the "Deref" trait, but can now consider the "Receiver" trait instead. Should it be renamed, to something like "TraitFollower"? This was considered, but rejected, because * even in the Receiver case, it still considers built-in derefs * the name Autoderef is short and snappy.
2024-12-01Adjust HostEffect error spans correctly to point at argsMichael Goulet-0/+4
2024-11-23global old solver cache: use `TypingEnv`lcnr-16/+6
2024-11-23no more Reveal :(lcnr-1/+1
2024-11-08Manually register some bounds for a better spanMichael Goulet-0/+5
2024-10-27Remove ObligationCause::span() methodMichael Goulet-12/+7
2024-10-27Stop using the whole match expr span for an arm's obligation spanMichael Goulet-0/+2
2024-10-23nightly feature tracking: get rid of the per-feature bool fieldsRalf Jung-1/+1
2024-10-20Rip out old effects var handling code from traitsMichael Goulet-6/+1
2024-10-17move `defining_opaque_types` out of `Canonical`lcnr-11/+14
2024-10-17`DropckOutlives` to `rustc_middle`lcnr-0/+8
2024-10-17remove type_op constructorslcnr-25/+1
2024-10-17`ImpliedOutlivesBounds` to `rustc_middle`lcnr-0/+8
2024-10-12Swap PredicateObligation to ThinVecGnomedDev-4/+5
2024-09-25Compiler: Rename "object safe" to "dyn compatible"León Orell Valerian Liehr-49/+55
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-4/+4
2024-08-08Detect `*` operator on `!Sized` expressionEsteban Küber-1/+1
``` error[E0277]: the size for values of type `str` cannot be known at compilation time --> $DIR/unsized-str-in-return-expr-arg-and-local.rs:15:9 | LL | let x = *""; | ^ doesn't have a size known at compile-time | = help: the trait `Sized` is not implemented for `str` = note: all local variables must have a statically known size = help: unsized locals are gated as an unstable feature help: references are always `Sized`, even if they point to unsized data; consider not dereferencing the expression | LL - let x = *""; LL + let x = ""; | ```
2024-07-29Reformat `use` declarations.Nicholas Nethercote-27/+26
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-07-12enable fuzzing of `SearchGraph`lcnr-125/+0
fully move it into `rustc_type_ir` and make it independent of `Interner`.
2024-07-07Get rid of the redundant elaboration in middleMichael Goulet-63/+0
2024-06-27Make queries more explicitMichael Goulet-1/+1
2024-06-21Rename a bunch of thingsMichael Goulet-12/+10
2024-06-18Uplift PredefinedOpaquesDataMichael Goulet-9/+3
2024-06-18Make SearchGraph fully genericMichael Goulet-18/+12
2024-06-16Uplift ExternalConstraintDataMichael Goulet-24/+5
2024-06-16Make ExternalConstraints just carry outlivesMichael Goulet-2/+1
2024-06-16Uplift Reveal to rustc_type_irMichael Goulet-48/+1
2024-06-13Method resolution constrains hidden types instead of rejecting method candidatesOli Scherer-1/+1
2024-06-12Stop passing traitref/traitpredicate by refMichael Goulet-1/+1
2024-06-06Uplift TypeErrorMichael Goulet-7/+0
2024-06-06Make middle not rely on next_trait_solverMichael Goulet-4/+4
2024-06-05Fully implement `ConstArgHasType`Boxy-0/+2
2024-05-24remove proof tree formatter, make em shallowlcnr-3/+3
2024-05-20move global cache lookup into fnlcnr-16/+18
2024-05-18Uplift inspect into rustc_type_irMichael Goulet-516/+14
2024-05-18Uplift GenericArgKind, CanonicalVarValues, QueryInputMichael Goulet-31/+5
and make NestedGoals generic
2024-05-16Uplift Goal to rustc_type_irMichael Goulet-27/+2
2024-05-16Rename ToPredicate for UpcastMichael Goulet-8/+8
2024-05-13Use a proper probe for shadowing implMichael Goulet-0/+5
2024-05-11Consolidate obligation cause codes for where clausesMichael Goulet-16/+9
2024-05-10Name tweaksMichael Goulet-7/+7
2024-05-10More rename falloutMichael Goulet-18/+19
2024-05-10Rename some ObligationCauseCode variantsMichael Goulet-27/+20
2024-05-10Remove glob imports for ObligationCauseCodeMichael Goulet-11/+12