Much like there are specialized variants of `mk_ty`. This will enable
some optimization in the next commit.
Also rename the existing `re_error*` functions as `mk_re_error*`, for
consistency.
interpret: rename Pointer::from_addr → from_addr_invalid
This function corresponds to `ptr::invalid` in the standard library; the previous name was not clear enough IMO.
Use derive attributes for uninteresting traversals
It appears that visiting and folding was implemented on `BitMatrix` solely so that the derive macros could be used on `GeneratorLayout`, however such implementation would not necessarily be correct for other uses (if there were any). Adding attributes to the derive macro is more correct and potentially more generally useful.
r? ``@oli-obk``
Refactor refcounted structural_impls via functors
The mapping of values in refcounted types can be extracted as a functor, simplifying the implementations in the type library (whose structural folding impls now all use such functors). This functor could also prove more generally useful elsewhere.
add an unstable `#[rustc_coinductive]` attribute
useful to test coinduction, especially in the new solver.
as this attribute should remain permanently unstable I don't think this needs any official approval. cc ``@rust-lang/types``
had to weaken the check for stable query results in the solver to prevent an ICE if there's a coinductive cycle with constraints.
r? ``@compiler-errors``
Store metrics from `metrics.json` to CI PGO timer
With this change, we'll be able to easily see how long does it take to compile LLVM vs `rustc`.
r? ```@Mark-Simulacrum```
Update the minimum external LLVM to 14
With this change, we'll have stable support for LLVM 14 through 16 (pending release).
For reference, the previous increase to LLVM 13 was #100460.
Rollup of 10 pull requests
Successful merges:
- #103478 ( Suggest fix for misplaced generic params on fn item #103366 )
- #107739 (Check for overflow in evaluate_canonical_goal)
- #108003 (Avoid ICE when the generic_span is empty)
- #108016 ("Basic usage" is redundant for there is just one example)
- #108023 (Shrink size of array benchmarks)
- #108024 (add message to update Cargo.toml when x is changed)
- #108025 (rustdoc: add more tooltips to intra-doc links)
- #108029 (s/eval_usize/eval_target_usize/ for clarity)
- #108035 (Avoid using a dead email address as the main email address)
- #108038 (Remove needless supertrait constraints from Interner projections)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Remove needless supertrait constraints from Interner projections
These associated types are already all constrained to implement `Ord`, so specifically requiring its supertraits `Eq`, `PartialEq` and `PartialOrd` is superfluous.
Avoid using a dead email address as the main email address
This caused highfive to welcome me as a new contributor on every PR, because it couldn't find any commits of mine.