summary refs log tree commit diff
path: root/compiler/rustc_ty_utils/src/instance.rs
AgeCommit message (Collapse)AuthorLines
2024-03-09Remove `Ord` from `ClosureKind`Deadbeef-17/+20
Using `Ord` to accomplish a meaning of subset relationship can be hard to read. The existing uses for that are easily replaced with a `match`, and in my opinion, more readable without needing to resorting to comments to explain the intention.
2024-03-04make `intrinsic` query legal for any `DefId`Oli Scherer-3/+1
2024-02-20Fix stray trait mismatch in resolve_associated_item for AsyncFnMichael Goulet-15/+3
2024-02-12Make `is_intrinsic` query return the intrinsic nameOli Scherer-1/+2
2024-02-11Auto merge of #120619 - compiler-errors:param, r=lcnrbors-3/+1
Assert that params with the same *index* have the same *name* Found this bug when trying to build libcore with the new solver, since it will canonicalize two params with the same index into *different* placeholders if those params differ by name.
2024-02-07Stop using is_copy_modulo_regions when building clone shimMichael Goulet-3/+1
2024-02-06Coroutine closures implement regular Fn traits, when possibleMichael Goulet-0/+18
2024-02-06Regular closures now built-in impls for AsyncFn*Michael Goulet-0/+13
2024-02-06More comments, final tweaksMichael Goulet-0/+7
2024-02-06Build a shim to call async closures with different AsyncFn trait kindsMichael Goulet-3/+14
2024-02-06Teach typeck/borrowck/solvers how to deal with async closuresMichael Goulet-0/+11
2024-02-06Add CoroutineClosure to TyKind, AggregateKind, UpvarArgsMichael Goulet-0/+1
2024-01-23Rollup merge of #120139 - compiler-errors:fnonce-shim, r=BoxyUwULeón Orell Valerian Liehr-1/+6
Do not normalize closure signature when building `FnOnce` shim It is not necessary to normalize the closure signature when building an `FnOnce` shim for an `Fn`/`FnMut` closure. That closure shim is just calling `FnMut::call_mut(&mut self)` anyways. It's also somewhat sketchy that we were ever doing this to begin with, since we're normalizing with a `ParamEnv::reveal_all()` param-env, which is definitely not right with possibly polymorphic substs. This cuts out a tiny bit of unnecessary work in `Instance::resolve` and simplifies the signature because now we can unconditionally return an `Instance`.
2024-01-22Do not normalize closure signature when building FnOnce shimMichael Goulet-1/+6
2024-01-19Consolidate logic around resolving built-in coroutine trait implsMichael Goulet-58/+1
2023-12-28Remove movability from TyKind::CoroutineMichael Goulet-4/+4
2023-12-24Remove `Session` methods that duplicate `DiagCtxt` methods.Nicholas Nethercote-3/+3
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier access.
2023-12-08Implement `async gen` blocksMichael Goulet-0/+15
2023-12-02Rename `HandlerInner::delay_span_bug` as `HandlerInner::span_delayed_bug`.Nicholas Nethercote-2/+2
Because the corresponding `Level` is `DelayedBug` and `span_delayed_bug` follows the pattern used everywhere else: `span_err`, `span_warning`, etc.
2023-11-21Rollup merge of #118115 - spastorino:fix-old-fn-names, r=compiler-errorsNilstrieb-1/+1
Fix occurrences of old fn names in comment and tracing
2023-11-20Fix occurrences of old fn names in comment and tracingSantiago Pastorino-1/+1
2023-11-20Reduce exposure of some items.Nicholas Nethercote-1/+1
2023-10-30Some more coroutine renamingsMichael Goulet-1/+1
2023-10-27Basic generators workOli Scherer-0/+13
2023-10-20s/generator/coroutine/Oli Scherer-6/+6
2023-10-20s/Generator/Coroutine/Oli Scherer-6/+6
2023-10-13Format all the let chains in compilerMichael Goulet-4/+1
2023-09-19Don't resolve generic instances if they may be shadowed by dynMichael Goulet-1/+24
2023-09-14treat host effect params as erased generics in codegenDeadbeef-0/+1
This fixes the changes brought to codegen tests when effect params are added to libcore, by not attempting to monomorphize functions that get the host param by being `const fn`.
2023-08-09Don't use type_of to determine if item has intrinsic shimMichael Goulet-35/+30
2023-07-25Make everything builtin!Michael Goulet-8/+11
2023-07-25Restore tuple unsizing feature gateMichael Goulet-1/+3
2023-07-14refactor(rustc_middle): Substs -> GenericArgMahdi Dibaiee-40/+35
2023-07-12Re-format let-else per rustfmt updateMark Rousskov-2/+4
2023-07-06get rid of a bit more calls to poly_selectMichael Goulet-1/+1
2023-06-20yeet ImplSource::TraitAlias tooMichael Goulet-3/+1
2023-06-17Remove even more redundant builtin candidatesMichael Goulet-77/+60
2023-06-17Simplify even more candidatesMichael Goulet-21/+19
2023-06-17Simplify some impl source candidatesMichael Goulet-4/+2
2023-06-01Rename `impl_defaultness` to `defaultness`Deadbeef-1/+1
2023-05-15Move expansion of query macros in rustc_middle to rustc_middle::queryJohn Kåre Alsaker-2/+3
2023-05-08Fix miscompilation when adding default method to `Future`Jonas Schievink-14/+11
2023-05-06make (try_)subst_and_normalize_erasing_regions take EarlyBinderKyle Matsuda-2/+1
2023-05-06More robust debug assertions for `Instance::resolve` on built-in traits with ↵Michael Goulet-13/+71
custom items
2023-05-03Restrict `From<S>` for `{D,Subd}iagnosticMessage`.Nicholas Nethercote-1/+1
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-2/+2
2023-04-20Remove WithOptconstParam.Camille GILLOT-35/+8
2023-04-20Feed type_of query instead of using WithOptconstParam.Camille GILLOT-6/+0
2023-04-16fix clippy::toplevel_ref_arg and ::manual_mapMatthias Krüger-7/+4
2023-04-07Move `FnPtrAddr` error to `SessionDiagnostic`Matthew Jasper-4/+5