Rust syntax coloring for some ignore, should-panic and no-run snippets.
In the book, some code blocks were missing the `rust` specifier which is needed for them to highlight correctly.
Only print parameters with elided lifetimes in elision error messages.
When displaying the function parameters for a lifetime elision error message,
this changes it to first filter out the parameters that don't have elided
lifetimes.
Fixes#30255.
rustdoc: Make the #[stable(since)] version attribute clearer with a tooltip
Rustdoc's new 'since' version placement only shows the version number in which the item was marked stable. This gains space but might make the meaning of this version string less clear in the docs, so I tried to bring some explicitness in a tooltip.
std: Update libc submodule
Brings in a fix where `-lutil` is no longer passed for musl targets, lifting the
need for a musl toolchain to be installed again.
Closes#33608
Add regression tests for error message when using enum variant as a type
I'm guessing these were actually fixed with PR #27085.
Closes#21225Closes#19197
Add a note about Higher-Ranked Trait Bounds in docs on Closures.
I hit a snag with lifetimes a few days ago and it wasn't until @birkenfeld pointed out Higher-Ranked Trait Bounds that I was able to solve the issue involving lifetimes on closure traits. This adds a small section in the book so that other users can find it.
r? @steveklabnik
Add error explanation for E0502
I am questioning the order of presentation on the suggested code fixes, but I'm not sure what would be best. Thoughts?
r? @GuillaumeGomez
Fix for old school error issues, improvements to new school
This PR:
* Fixes some old school error issues, specifically #33559, #33543, #33366
* Improves wording borrowck errors with match patterns
* De-emphasize multi-line spans, so we don't color the single source character when we're trying to say "span starts here"
* Rollup of #33392 (which should help fix#33390)
r? @nikomatsakis
track incr. comp. dependencies across crates
This PR refactors the compiler's incremental compilation hashing so that it can track dependencies across crates. The main bits are:
- computing a hash representing the metadata for an item we are emitting
- we do this by making `MetaData(X)` be the current task while computing metadata for an item
- this naturally registers reads from any tables and things that we read for that purpose
- we can then hash all the inputs to those tables
- tracking when we access metadata
- we do this by registering a read of `MetaData(X)` for each foreign item `X` whose metadata we read
- hashing metadata from foreign items
- we do this by loading up metadata from a file in the incr. comp. directory
- if there is no file, we use the SVH for the entire crate
There is one very simple test only at this point. The next PR will be focused on expanding out the tests.
Note that this is based on top of https://github.com/rust-lang/rust/pull/33228
r? @michaelwoerister
This commit reorganizes how the persist code treats hashing. The idea is
that each crate saves a file containing hashes representing the metadata
for each item X. When we see a read from `MetaData(X)`, we can load this
hash up (if we don't find a file for that crate, we just use the SVH for
the entire crate).
To compute the hash for `MetaData(Y)`, where Y is some local item, we
examine all the predecessors of the `MetaData(Y)` node and hash their
hashes together.
For external crates, we must build up a map that goes from
the DefKey to the DefIndex. We do this by iterating over each
index that is found in the metadata and loading the associated
DefKey.
introduce a specializes cache
This query is frequently used during trait selection and caching the
result can be a reasonable performance win.
The one case I examined thus far was the mrusty package (v0.5.1), where I saw an improvement in "typeck item bodies" from ~8.3s to ~1.9s.
r? @aturon