overhaul intra-doc-link ambiguity warning
Fixes#52784.
- Makes the warning part of the `intra_doc_link_resolution_failure`
lint.
- Tightens the span to just the ambiguous link.
- Reports ambiguities across all three namespaces.
- Uses structured suggestions for disambiguation.
- Adds a test for the warnings.
r? @QuietMisdreavus
Filter ui revision tests
Updates UI test output filtering to also filter away test annotations for revisions:
Previously filtered: //~ ERROR [XXXX]
Now also filters: //[revision]~ ERROR [XXXX]
I reckon, if we have the one, we should have the other for consistency, its lack was probably an oversight (the existence of revision testing is not really well documented...)
`src/ci/docker`, so that when files under `dist-x86_64-linux` is changed,
its dependent image `dist-i686-linux` will also be rebuilt.
However, this ultraconservative solution caused the `dist-i686-linux` to
be rebuilt every time an irrelevant Dockerfile (e.g. the PowerPC ones) is
changed, which increases the building time beyond 3 hours and forcing
a spurious but expected failure.
This commit instead parses the Dockerfile itself and look for the actual
dependencies. The scripts needs to be copied into the Docker image, which
must be done with the COPY command, so we just need to find all lines with
a COPY command and add the source file into the hash calculator.
Note: this script only handles single-lined COPY command in the form
`COPY src1 src2 src3 dst`, since these are the only variant used inside
this repository.
Revert the `LazyConst` PR
The introduction of `LazyConst` did not actually achieve the code simplicity improvements that were the main reason it was introduced. Especially in the presence of const generics, the differences between the "levels of evaluatedness" of a constant become less clear. As it can be seen by the changes in this PR, further simplifications were possible by folding `LazyConst` back into `ConstValue`. We have been able to keep all the advantages gained during the `LazyConst` refactoring (like `const_eval` not returning an interned value, thus making all the `match` code simpler and more performant).
fixes https://github.com/rust-lang/rust/issues/59209
r? @eddyb @varkor
Do not accidentally treat multi-segment meta-items as single-segment
Fixes https://github.com/rust-lang/rust/issues/55168 and many other regressions from https://github.com/rust-lang/rust/pull/50030
Basically, attributes like `#[any::prefix::foo]` were commonly interpreted as `#[foo]` due to `name()` successfully returning the last segment (this applies to nested things as well `#[attr(any::prefix::foo)]`).
This should make it easier to identify what each job is doing when looking at the Travis or Appveyor UI.
- Set `name` for each job in Travis.
- Move `CI_JOB_NAME` to the front in Appveyor so that it appears first in the UI.
Rollup of 37 pull requests
Successful merges:
- #58854 (appveyor: Use VS2017 for all our images)
- #58855 (std: Spin for a global malloc lock on wasm32)
- #58873 (Fix "Auto-hide item methods documentation" setting)
- #58901 (Change `std::fs::copy` to use `copyfile` on MacOS and iOS)
- #58933 (Move alloc::prelude::* to alloc::prelude::v1, make alloc a subset of std)
- #58938 (core: ensure VaList passes improper_ctypes lint)
- #58941 (MIPS: add r6 support)
- #58949 (SGX target: Expose thread id function in os module)
- #58959 (Add release notes for PR #56243)
- #58976 (Default to integrated `rust-lld` linker for UEFI targets)
- #59009 (Fix SGX implementations of read/write_vectored.)
- #59025 (Fix generic argument lookup for Self)
- #59036 (Fix ICE in MIR pretty printing)
- #59037 (Avoid some common false positives in intra doc link checking)
- #59072 (we can now skip should_panic tests with the libtest harness)
- #59079 (add suggestions to invalid macro item error)
- #59082 (A few improvements to comments in user-facing crates)
- #59102 (Consistent naming for duration_float methods and additional f32 methods)
- #59118 (rustc: fix ICE when trait alias has bare Self)
- #59139 (Unregress using scalar unions in constants.)
- #59146 (Suggest return lifetime when there's only one named lifetime)
- #59147 (Make std time tests more robust for platform differences)
- #59152 (Stabilize Range*::contains.)
- #59156 ([wg-async-await] Add regression test for #55809.)
- #59158 (Revert "Don't generate minification variable if minification disabled")
- #59169 (Add `-Z allow_features=...` flag)
- #59173 (bootstrap: Default to a sensible llvm-suffix.)
- #59175 (Don't run test launching `echo` since that doesn't exist on Windows)
- #59180 (Use try blocks in rustc_codegen_ssa)
- #59185 (No old chestnuts in iter::repeat docs)
- #59201 (Remove restriction on isize/usize in repr(simd))
- #59204 (Output diagnostic information for rustdoc)
- #59206 (Improved test output)
- #59208 (Reduce a Code Repetition Related to Bit Operation)
- #59212 (Add x86_64 musl host to the manifest)
- #59221 (Option and Result: Add references to documentation of as_ref and as_mut)
- #59231 (Stabilize Option::copied)
Option and Result: Add references to documentation of as_ref and as_mut
This makes the documentation more consistent with that of `Pin::as_ref` which converts "from `&Pin<Pointer<T>>` to `Pin<&t>`".
This generally makes it clearer that the reference is going inside the option.
Remove restriction on isize/usize in repr(simd)
As discussed in #55078, there's no known reason for this restriction.
It's unlikely that repr(simd) will be stabilized in its current form, but
might as well remove some restrictions on it.
This removes the branch in `is_machine` which returns false for these types.
`is_machine` is only used for the repr(simd) type validation check.
No old chestnuts in iter::repeat docs
The current language may be amusing, yet is just imprecise and most especially difficult to understand for someone who speaks English as a foreign language.
bootstrap: Default to a sensible llvm-suffix.
I used version-channel-sha, hopefully that should work.
I checked that bootstrap builds, but I cannot check anything else since the llvm
build process is started from cargo, and thus calls clang, and thus I hit the
same bug I hope to fix with this change.
Hopefully fixes#59034.
Add `-Z allow_features=...` flag
Adds a compiler option to allow only whitelisted features.
For projects on nightly that want to prevent feature-creep (and maybe, someday, move off of nightly). Not being able to enforce this has been a problem on Fuchsia and at other big companies.
This doesn't support filtering edition feature flags, but someone is welcome to add that if they need it.
Revert "Don't generate minification variable if minification disabled"
Reverts #58643Fixes#59157https://github.com/rust-lang/rust/pull/58643 made us stop generating minification variables when minification is disabled, however they may still be needed for parent crates that were generated with minification (this will always be the case for libstd and libcore)
r? @QuietMisdreavus @GuillaumeGomez
[wg-async-await] Add regression test for #55809.
Fixes#55809.
This PR adds a regression test for #55809 which checks that a
overflow does not occur when evaluating a requirement for async
functions and `&mut` arguments in some specific circumstances.
Stabilize Range*::contains.
Closes https://github.com/rust-lang/rust/issues/32311. There's also a bit of rustfmt on range.rs thrown in for good measure (I forgot to turn off format-on-save in VSCode).
Make std time tests more robust for platform differences
Previously, `time::tests::since_epoch` and `time::tests::system_time_math` would fail if the platform represents a SystemTime as unix epoch + `u64` nanoseconds.
r? @sfackler
A few improvements to comments in user-facing crates
Not too many this time, and all concern comments (almost all doc comments) in user-facing crates (libstd, libcore, liballoc).
r? @steveklabnik
Avoid some common false positives in intra doc link checking
The empty string case is never going to be a link. The numeric case may be a link, but if it were it would have resolved locally. It's more likely the makeshift markdown footnote notation (`[0]`, etc)
r? @QuietMisdreavus