| Age | Commit message (Collapse) | Author | Lines |
|
|
|
Fixes #57156.
|
|
|
|
Commit f57247c48cb59 (Ensure that Rusdoc discovers all necessary auto
trait bounds) added a check to ensure that we only attempt to unify a
projection predicatre with inference variables. However, the check it
added was too strict - instead of checking that a type *contains* an
inference variable (e.g. '&_', 'MyType<_>'), it required the type to
*be* an inference variable (i.e. only '_' would match).
This commit relaxes the check to use 'ty.has_infer_types', ensuring that
we perform unification wherever possible.
Fixes #56822
|
|
If we end up with a projection predicate that equates a type with
itself (e.g. <T as MyType>::Value == <T as MyType>::Value), we can
run into issues if we try to add it to our ParamEnv.
|
|
|
|
Fixes #50159
This commit makes several improvements to AutoTraitFinder:
* Call infcx.resolve_type_vars_if_possible before processing new
predicates. This ensures that we eliminate inference variables wherever
possible.
* Process all nested obligations we get from a vtable, not just ones
with depth=1.
* The 'depth=1' check was a hack to work around issues processing
certain predicates. The other changes in this commit allow us to
properly process all predicates that we encounter, so the check is no
longer necessary,
* Ensure that we only display predicates *without* inference variables
to the user, and only attempt to unify predicates that *have* an
inference variable as their type.
Additionally, the internal helper method is_of_param now operates
directly on a type, rather than taking a Substs. This allows us to use
the 'self_ty' method, rather than directly dealing with Substs.
|
|
|
|
|
|
This follows ALT2 in the issue.
Fixes #56288.
|
|
Remove not used `DotEq` token
Currently libproc_macro does not use `DotEq` token.
https://github.com/rust-lang/rust/pull/49545 changed libproc_macro
to not generate `DotEq` token.
|
|
Consider references and unions potentially inhabited during privacy-respecting inhabitedness checks
It isn't settled exactly how references to uninhabited types and unions of uninhabited types should act, but we should be more conservative here, as it's likely it will be permitted to soundly have values of such types.
This will also be more important in light of the changes at https://github.com/rust-lang/rust/pull/54125.
cc @RalfJung
|
|
Currently libproc_macro does not use `DotEq` token.
https://github.com/rust-lang/rust/pull/49545 changed libproc_macro
to not generate `DotEq` token.
|
|
Implement chalk unification routines
`ResolventOps` and `AggregateOps` are mostly straightforwardly translated from chalk. I had caught a few bugs already in my `chalk` branch and backported fixes to this branch, but there may be other ones left. EDIT: I hope there are none left now :)
Fixes #54935.
|
|
Use raw_entry for more efficient interning
Fixes https://github.com/rust-lang/rust/issues/56308#issuecomment-442492744
|
|
Stabilize self_struct_ctor feature.
[**Tracking Issue**](https://github.com/rust-lang/rust/issues/51994)
|
|
Add inline attributes and add unit to CommonTypes
|
|
Remove not used option
`mir_stats` has not been used since 2b32cb90c72d90c722d56324ca0ea9f748ebf4e1.
|
|
Clean up and streamline the pretty-printer
Some minor improvements.
|
|
Use sort_by_cached_key when the key function is not trivial/free
I'm not 100% sure about `def_path_hash` (everything it does is inlined) but it seems like a good idea at least for the rest, as they are cloning.
|
|
|
|
|
|
|
|
(compiler front-ends).
|
|
|
|
|
|
|
|
|
|
privacy-respecting inhabitedness checks
|
|
|
|
|
|
|
|
|
|
libcore: Add VaList and variadic arg handling intrinsics
## Summary
- Add intrinsics for `va_start`, `va_end`, `va_copy`, and `va_arg`.
- Add `core::va_list::VaList` to `libcore`.
Part 1 of (at least) 3 for #44930
Comments and critiques are very much welcomed 😄
|
|
|
|
rustc-guide has moved to rust-lang/
r? @nikomatsakis
|
|
Make JSON output from -Zprofile-json valid
r? @wesleywiser
cc https://github.com/rust-lang-nursery/rustc-perf/issues/299
|
|
avoid features_untracked
The docs say to not use `features_untracked` when we have a tcx.
@oli-obk any particular reason why the untracked version is used all over const qualification?
|
|
`mir_stats` has not been used since 2b32cb90c72d90c722d56324ca0ea9f748ebf4e1.
|
|
`Printer::word` takes a `&str` and converts it into a `String`, which
causes an allocation. But that allocation is rarely necessary, because
`&str` is almost always a `&'static str` or a `String` that won't be
used again.
This commit changes `Token::String` so it holds a `Cow<'static, str>`
instead of a `String`, which avoids a lot of allocations.
|
|
|
|
Put all existential ty vars in the `ROOT` universe
r? @nikomatsakis
|
|
|
|
miri: Memory data revived, Hooks for stack frame push/pop
r? @oli-obk
|
|
|
|
- Add the llvm intrinsics used to manipulate a va_list.
- Add the va_list lang item in order to allow implementing
VaList in libcore.
|
|
Use per-span hygiene in a few other places in resolve
Prefer `rust_2015`/`rust_2018` helpers to comparing editions
|
|
|
|
|
|
Allow assignments in const contexts
fixes https://github.com/rust-lang/rust/issues/54098
fixes https://github.com/rust-lang/rust/issues/51251
fixes https://github.com/rust-lang/rust/issues/52613
|