Commit graph

140626 commits

Author SHA1 Message Date
Michael Howell
19f9f658d6 rustdoc: migrate document functions to return a Display 2023-04-03 17:17:39 -07:00
Michael Howell
94faa5c739 rustdoc: convert render_attributes_in_pre to return a Display 2023-04-03 15:42:01 -07:00
Michael Howell
fc5de13d31 rustdoc: convert print_tuple_struct_fields to return a Display 2023-04-03 15:31:07 -07:00
bors
932c173ca1 Auto merge of #109884 - matthiaskrgr:rollup-5wapig9, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #109526 (LIBPATH is used as dylib's path environment variable on AIX)
 - #109642 (check for missing codegen backeng config)
 - #109722 (Implement read_buf for RustHermit)
 - #109856 (fix(middle): emit error rather than delay bug when reaching limit)
 - #109868 (Improve PR job names in Github Actions preview)
 - #109871 (Include invocation start times)
 - #109873 (Move some UI tests into subdirectories)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-04-03 07:27:58 +00:00
Matthias Krüger
22df7107bd
Rollup merge of #109873 - jyn514:subdirectories, r=compiler-errors
Move some UI tests into subdirectories
2023-04-03 08:58:55 +02:00
Matthias Krüger
41cd454228
Rollup merge of #109871 - Mark-Simulacrum:metrics-timestamp, r=ozkanonur
Include invocation start times

For multi-invocation builders (e.g., dist-x86_64-linux) this timestamp is necessary to correlate the data in the metrics JSON with other data sources (e.g., logs, cpu-usage CSV, etc.). Such correlation may not be perfect but is sometimes helpful and awkward to do otherwise.
2023-04-03 08:58:54 +02:00
Matthias Krüger
9007ee9f1c
Rollup merge of #109868 - jyn514:ci-names, r=Mark-Simulacrum
Improve PR job names in Github Actions preview

Fixes https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/PR.20CI.20job.20names.

Before: `CI / PR (mingw-check, false, ubuntu-20.04-16core-64gb) (pull_request)`
After:  `CI / PR - mingw-check (pull_request)`

r? ``@jyn514``
2023-04-03 08:58:54 +02:00
Matthias Krüger
cc6a279f05
Rollup merge of #109642 - lenko-d:rust_codegen-backends_interacts_confusingly_with_paths, r=Mark-Simulacrum
check for missing codegen backeng config

Fixes [#109610](https://github.com/rust-lang/rust/issues/109610)
2023-04-03 08:58:52 +02:00
Matthias Krüger
7192ef3efd
Rollup merge of #109526 - bzEq:aix-libpath, r=Mark-Simulacrum
LIBPATH is used as dylib's path environment variable on AIX

See https://4js.com/online_documentation/fjs-fgl-3.00.05-manual-html/c_fgl_installation_017.html.
2023-04-03 08:58:52 +02:00
bors
d0eed58a1e Auto merge of #108288 - ozkanonur:hotfix-90244, r=Mark-Simulacrum
fix `build --stage 2 compiler/rustc` panic

Skip assembling(which causes panic due to not found `.librustc.stamp` file) process
for stage3(since it has problems with sysroot) if full-bootstrap isn't used.

Resolves #90244
2023-04-03 04:54:02 +00:00
jyn
01b75e20f2 Move some UI tests into subdirectories
to avoid going over the existing limit now that the ui-fulldeps tests have
been moved to ui.
2023-04-02 19:42:30 -04:00
Mark Rousskov
dd85271ef5 Include invocation start times
For multi-invocation builders (e.g., dist-x86_64-linux) this timestamp
is necessary to correlate the data in the metrics JSON with other data
sources (e.g., logs, cpu-usage CSV, etc.). Such correlation may not be
perfect but is sometimes helpful and awkward to do otherwise.
2023-04-02 19:28:52 -04:00
jyn
423e76f1dd Improve job names in Github Actions preview
Before: `CI / PR (mingw-check, false, ubuntu-20.04-16core-64gb) (pull_request)`
After: `CI / PR - mingw-check (pull_request)`
2023-04-02 17:58:08 -04:00
ozkanonur
5d1ee66abe fix build --stage 2 compiler/rustc panic
Signed-off-by: ozkanonur <work@onurozkan.dev>
2023-04-02 19:00:00 +03:00
bors
3a8a131e95 Auto merge of #109811 - jyn514:symlink-fixes, r=Mark-Simulacrum
Replace any existing `build/host` symlink

This has two advantages:
1. If `build.build` changes between runs, the symlink is no longer silently wrong.
2. If the entire build directory is moved, the symlink is no longer broken because it points to the wrong absolute path.
2023-04-02 14:54:31 +00:00
Jynn Nelson
28b7e6abff Replace any existing build/host symlink
This has two advantages:
1. If `build.build` changes between runs, the symlink is no longer
   silently wrong.
2. If the entire build directory is moved, the symlink is no longer
   broken because it points to the wrong absolute path.
2023-04-02 07:57:05 -05:00
Nilstrieb
e2ffe151a3
Rollup merge of #109844 - matthiaskrgr:clippy2023_04, r=Nilstrieb
a couple clippy::complexity fixes

map_identity
filter_next
option_as_ref_deref
unnecessary_find_map
redundant_slicing
unnecessary_unwrap
bool_comparison
derivable_impls
manual_flatten
needless_borrowed_reference
2023-04-02 10:08:34 +02:00
bors
0f6312f643 Auto merge of #109833 - klensy:bs-tty, r=Mark-Simulacrum
bootstrap: replace `atty` with `is-terminal`, dedupe deps

`atty` reported as [unsound](https://rustsec.org/advisories/RUSTSEC-2021-0145), so replaced with `is-terminal`, also updated few crates to reduce dupes

fd-lock v3.0.8 -> v3.0.11 (https://github.com/yoshuawuyts/fd-lock/compare/v3.0.8...v3.0.11, https://github.com/yoshuawuyts/fd-lock/pull/38)
2023-04-01 22:51:10 +00:00
Matthias Krüger
8ef3bf29fe a couple clippy::complexity fixes
map_identity
filter_next
option_as_ref_deref
unnecessary_find_map
redundant_slicing
unnecessary_unwrap
bool_comparison
derivable_impls
manual_flatten
needless_borrowed_reference
2023-04-01 23:16:33 +02:00
Eric Huss
6e29862fd2 Update cargo 2023-04-01 08:49:20 -07:00
klensy
1f3ee276e5 bootstrap replace atty with is-terminal, dedupe few deps 2023-04-01 17:54:52 +03:00
bors
87e6b621a2 Auto merge of #109721 - QuinnPainter:armv4t-lld, r=petrochenkov
Switch to LLD as default linker for {arm,thumb}v4t-none-eabi

The LLVM 16 update brought ARMv4t support to LLD. We should use it by default so users don't need to install an external linker.

cc `@Lokathor`
2023-04-01 01:55:16 +00:00
bors
5e1d3299a2 Auto merge of #109824 - GuillaumeGomez:rollup-i5r4uts, r=GuillaumeGomez
Rollup of 7 pull requests

Successful merges:

 - #109104 (rustdoc: Fix invalid suggestions on ambiguous intra doc links v2)
 - #109443 (Move `doc(primitive)` future incompat warning to `invalid_doc_attributes`)
 - #109680 (Fix subslice capture in closure)
 - #109798 (fluent_messages macro: don't emit the OS error in a note)
 - #109805 (Source map cleanups)
 - #109818 (rustdoc: Add GUI test for jump to collapsed item)
 - #109820 (rustdoc-search: update docs for comma in `?` help popover)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-03-31 20:38:06 +00:00
Guillaume Gomez
083c128ae1
Rollup merge of #109820 - notriddle:notriddle/help-comma, r=camelid
rustdoc-search: update docs for comma in `?` help popover
2023-03-31 22:32:51 +02:00
Guillaume Gomez
32842e87b1
Rollup merge of #109818 - GuillaumeGomez:test-collapsed-item, r=notriddle
rustdoc: Add GUI test for jump to collapsed item

Part of https://github.com/rust-lang/rust/issues/66181.

I updated `browser-ui-test` version because I needed to add a new command `property`: https://github.com/GuillaumeGomez/browser-UI-test/pull/452.

r? `@notriddle`
2023-03-31 22:32:51 +02:00
Guillaume Gomez
6c93c63771
Rollup merge of #109443 - GuillaumeGomez:doc-primitive-hard-error, r=notriddle
Move `doc(primitive)` future incompat warning to `invalid_doc_attributes`

Fixes #88070.

It's been a while since this was turned into a "future incompatible lint" so I think we can now turn it into a hard error without problem.

r? `@jyn514`
2023-03-31 22:32:49 +02:00
Guillaume Gomez
8fe5b56b66
Rollup merge of #109104 - GuillaumeGomez:fix-invalid-suggestion-ambiguous-intra-doc2, r=oli-obk,notriddle
rustdoc: Fix invalid suggestions on ambiguous intra doc links v2

Fixes https://github.com/rust-lang/rust/issues/108653.

This is another approach to fixing the same issue. This time, we keep the computed information around instead of re-computing it.

Strangely enough, the order for ambiguities seem to have been changed. Not an issue but it creates a lot of diff...

So which version do you prefer?

r? `@notriddle`
2023-03-31 22:32:48 +02:00
bors
7402519c63 Auto merge of #109010 - compiler-errors:rtn, r=eholk
Initial support for return type notation (RTN)

See: https://smallcultfollowing.com/babysteps/blog/2023/02/13/return-type-notation-send-bounds-part-2/

1. Only supports `T: Trait<method(): Send>` style bounds, not `<T as Trait>::method(): Send`. Checking validity and injecting an implicit binder for all of the late-bound method generics is harder to do for the latter.
    * I'd add this in a follow-up.
3. ~Doesn't support RTN in general type position, i.e. no `let x: <T as Trait>::method() = ...`~
    * I don't think we actually want this.
5. Doesn't add syntax for "eliding" the function args -- i.e. for now, we write `method(): Send` instead of `method(..): Send`.
    * May be a hazard if we try to add it in the future. I'll probably add it in a follow-up later, with a structured suggestion to change `method()` to `method(..)` once we add it.
7. ~I'm not in love with the feature gate name 😺~
    * I renamed it to `return_type_notation` ✔️

Follow-up PRs will probably add support for `where T::method(): Send` bounds. I'm not sure if we ever want to support return-type-notation in arbitrary type positions. I may also make the bounds require `..` in the args list later.

r? `@ghost`
2023-03-31 18:04:12 +00:00
Michael Howell
54ef3a4786 rustdoc-search: update docs for comma in ? help popover 2023-03-31 10:18:44 -07:00
Guillaume Gomez
aab9e32094 Update browser-ui-test version to 0.14.6 2023-03-31 16:02:22 +02:00
bors
22a7a19f93 Auto merge of #98112 - saethlin:mir-alignment-checks, r=oli-obk
Insert alignment checks for pointer dereferences when debug assertions are enabled

Closes https://github.com/rust-lang/rust/issues/54915

- [x] Jake tells me this sounds like a place to use `MirPatch`, but I can't figure out how to insert a new basic block with a new terminator in the middle of an existing basic block, using `MirPatch`. (if nobody else backs up this point I'm checking this as "not actually a good idea" because the code looks pretty clean to me after rearranging it a bit)
- [x] Using `CastKind::PointerExposeAddress` is definitely wrong, we don't want to expose. Calling a function to get the pointer address seems quite excessive. ~I'll see if I can add a new `CastKind`.~ `CastKind::Transmute` to the rescue!
- [x] Implement a more helpful panic message like slice bounds checking.

r? `@oli-obk`
2023-03-31 08:50:35 +00:00
Guillaume Gomez
bcf8a8b58c Improve code 2023-03-30 22:56:52 +02:00
Guillaume Gomez
48f7148fca Update documentation for rustc_doc_primitive 2023-03-30 22:56:52 +02:00
Guillaume Gomez
364e961417 Replace doc(primitive) with rustc_doc_primitive 2023-03-30 22:56:52 +02:00
bors
789ee5e433 Auto merge of #108576 - megakorre:rustdock_additional_typecheck_before_clean, r=GuillaumeGomez
rustdoc: run more HIR validation to mirror rustc

# Explanation

While investigating these issues: https://github.com/rust-lang/rust/issues/107093, https://github.com/rust-lang/rust/issues/106079
I thought it maybe would be useful to test running `rustdoc` on all rust files under `tests/ui` grepping for files that causes any ICEs.
And these are the files I found would cause ICEs.
```
// These are handled by this fix.
tests/ui/late-bound-lifetimes/mismatched_arg_count.rs
tests/ui/associated-consts/issue-102335-const.rs
tests/ui/const-generics/generic_const_exprs/issue-102768.rs
tests/ui/const-generics/const-arg-type-arg-misordered.rs
tests/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs
tests/ui/typeck/issue-88643.rs
tests/ui/typeck/issue-75889.rs
tests/ui/typeck/issue-83621-placeholder-static-in-extern.rs
// These are not they will still produce a ICE after this change
tests/ui/limits/issue-56762.rs
tests/ui/union/projection-as-union-type-error-2.rs
tests/ui/union/projection-as-union-type-error.rs
```

I reduces the issues handled by this PR down to the tests added in the PR. That includes the linked issues.
But the 3 files that are not handled I will leave for a future PR.

This PR adds the `type_collecting` step from `hir_analysis::check_crate` to the rustdoc typechecks.
It had the following comment on it.
```
// this ensures that later parts of type checking can assume that items
// have valid types and not error
```
Adding the check report the same errors as rustc does for these input.
And not ICE when the lint checker walks the HIR or when in the `rustdoc::clean` pass.

This PR updates the expected errors of some existing rustdoc-ui tests (some now report less errors).
These new reported errors does mirror the errors reported by rustc.

# Performance
It does more checking so it will probably regress. We should run ``@bors` try `@rust-timer` queue` and see.

# Discussion

Maybe instead of calling a subset of the checks in `hir_analysis::check_crate` and having comments that say they should be kept in sync. We could instead call `check_crate` directly and pass in some flag. Maybe `check_toplevel_signatures_only` or something like that. That flag would have to skip most of the checks in that function tough.
2023-03-30 15:21:22 +00:00
Patrik Kårlin
9b5115f92b
rustdoc: run more HIR validation to mirror rustc 2023-03-30 14:55:03 +02:00
bors
516a6d3202 Auto merge of #109769 - JohnTitor:rollup-7n2bnpg, r=JohnTitor
Rollup of 7 pull requests

Successful merges:

 - #106985 (Enhanced doucmentation of binary search methods for `slice` and `VecDeque` for unsorted instances)
 - #109509 (compiletest: Don't allow tests with overlapping prefix names)
 - #109719 (RELEASES: Add "Only support Android NDK 25 or newer" to 1.68.0)
 - #109748 (Don't ICE on `DiscriminantKind` projection in new solver)
 - #109749 (Canonicalize float var as float in new solver)
 - #109761 (Drop binutils on powerpc-unknown-freebsd)
 - #109766 (Fix title for openharmony.md)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-03-30 12:44:25 +00:00
Yuki Okushi
6519ca462f
Rollup merge of #109766 - Amanieu:ohos-title, r=JohnTitor
Fix title for openharmony.md
2023-03-30 21:07:04 +09:00
Yuki Okushi
33ff1c9331
Rollup merge of #109761 - pkubaj:patch-1, r=ozkanonur
Drop binutils on powerpc-unknown-freebsd

FreeBSD 13.1 and 13.2 can build Rust with LLD just fine on powerpc.
2023-03-30 21:07:03 +09:00
Yuki Okushi
2981d7781c
Rollup merge of #109509 - ehuss:overlapping-tests, r=Mark-Simulacrum
compiletest: Don't allow tests with overlapping prefix names

Some tests will delete their output directory before starting. The output directory is based on the test names. If one test is the prefix of another test, then when that test starts, it could try to delete the output directory of the other test with the longer path, or otherwise clash with it while the two tests are trying to create/delete/modify the same directory.

In practice, this manifested as a random error on macOS where two tests were trying to create/delete/create `rustdoc/primitive` and `rustdoc/primitive/no_std`, which resulted in an EINVAL (InvalidInput) error.

This renames some of the offending tests, adds `compiletest-ignore-dir` to prevent compiletest from processing some files, and adds a check to prevent this from happening in the future.

Fixes #109397
2023-03-30 21:07:00 +09:00
Amanieu d'Antras
4b7f14149b Fix title for openharmony.md 2023-03-30 12:06:07 +01:00
bors
8a7ca936e6 Auto merge of #105587 - tgross35:once-cell-min, r=m-ou-se
Partial stabilization of `once_cell`

This PR aims to stabilize a portion of the `once_cell` feature:

- `core::cell::OnceCell`
- `std::cell::OnceCell` (re-export of the above)
- `std::sync::OnceLock`

This will leave `LazyCell` and `LazyLock` unstabilized, which have been moved to the `lazy_cell` feature flag.

Tracking issue: https://github.com/rust-lang/rust/issues/74465 (does not fully close, but it may make sense to move to a new issue)

Future steps for separate PRs:
- ~~Add `#[inline]` to many methods~~ #105651
- Update cranelift usage of the `once_cell` crate
- Update rust-analyzer usage of the `once_cell` crate
- Update error messages discussing once_cell

## To be stabilized API summary

```rust
// core::cell (in core/cell/once.rs)

pub struct OnceCell<T> { .. }

impl<T> OnceCell<T> {
    pub const fn new() -> OnceCell<T>;
    pub fn get(&self) -> Option<&T>;
    pub fn get_mut(&mut self) -> Option<&mut T>;
    pub fn set(&self, value: T) -> Result<(), T>;
    pub fn get_or_init<F>(&self, f: F) -> &T where F: FnOnce() -> T;
    pub fn into_inner(self) -> Option<T>;
    pub fn take(&mut self) -> Option<T>;
}

impl<T: Clone> Clone for OnceCell<T>;
impl<T: Debug> Debug for OnceCell<T>
impl<T> Default for OnceCell<T>;
impl<T> From<T> for OnceCell<T>;
impl<T: PartialEq> PartialEq for OnceCell<T>;
impl<T: Eq> Eq for OnceCell<T>;
```

```rust
// std::sync (in std/sync/once_lock.rs)

impl<T> OnceLock<T> {
    pub const fn new() -> OnceLock<T>;
    pub fn get(&self) -> Option<&T>;
    pub fn get_mut(&mut self) -> Option<&mut T>;
    pub fn set(&self, value: T) -> Result<(), T>;
    pub fn get_or_init<F>(&self, f: F) -> &T where F: FnOnce() -> T;
    pub fn into_inner(self) -> Option<T>;
    pub fn take(&mut self) -> Option<T>;
}

impl<T: Clone> Clone for OnceLock<T>;
impl<T: Debug> Debug for OnceLock<T>;
impl<T> Default for OnceLock<T>;
impl<#[may_dangle] T> Drop for OnceLock<T>;
impl<T> From<T> for OnceLock<T>;
impl<T: PartialEq> PartialEq for OnceLock<T>
impl<T: Eq> Eq for OnceLock<T>;
impl<T: RefUnwindSafe + UnwindSafe> RefUnwindSafe for OnceLock<T>;
unsafe impl<T: Send> Send for OnceLock<T>;
unsafe impl<T: Sync + Send> Sync for OnceLock<T>;
impl<T: UnwindSafe> UnwindSafe for OnceLock<T>;
```

No longer planned as part of this PR, and moved to the `rust_cell_try` feature gate:

```rust
impl<T> OnceCell<T> {
    pub fn get_or_try_init<F, E>(&self, f: F) -> Result<&T, E> where F: FnOnce() -> Result<T, E>;
}

impl<T> OnceLock<T> {
    pub fn get_or_try_init<F, E>(&self, f: F) -> Result<&T, E> where F: FnOnce() -> Result<T, E>;
}
```

I am new to this process so would appreciate mentorship wherever needed.
2023-03-30 10:12:23 +00:00
pkubaj
ad60b99835
Drop binutils on powerpc-unknown-freebsd
FreeBSD 13.1 and 13.2 can build Rust with LLD just fine on powerpc.
2023-03-30 07:05:24 +00:00
bors
10338571cf Auto merge of #107221 - kleisauke:getentropy-emscripten, r=ChrisDenton
Use `getentropy()` instead of `/dev/urandom` on Emscripten

`/dev/urandom` is usually available on Emscripten, except when using
the special `NODERAWFS` filesystem backend, which replaces all normal
filesystem access with direct Node.js operations.

Since this filesystem backend directly access the filesystem on the
OS, it is not recommended to depend on `/dev/urandom`, especially
when trying to run the Wasm binary on OSes that are not Unix-based.

This can be considered a non-functional change, since Emscripten
implements `/dev/urandom` in the same way as `getentropy()` when not
linking with `-sNODERAWFS`.
2023-03-30 00:25:41 +00:00
Trevor Gross
dc4ba57566 Stabilize a portion of 'once_cell'
Move items not part of this stabilization to 'lazy_cell' or 'once_cell_try'
2023-03-29 18:04:44 -04:00
Matthias Krüger
02cb4da896
Rollup merge of #109726 - GuillaumeGomez:doc-hidden-crate, r=notriddle
rustdoc: Don't strip crate module

Until we decide something for https://github.com/rust-lang/rust/issues/109695, rustdoc won't crash anymore because the crate folder doesn't exist.

r? `@notriddle`
2023-03-29 21:19:51 +02:00
Guillaume Gomez
71ff7ef17c Don't strip crate module 2023-03-29 16:17:45 +02:00
Quinn Painter
3811275f09 Switch to LLD as default linker for {arm,thumb}v4t-none-eabi 2023-03-29 12:51:11 +01:00
bors
cf32b9de1e Auto merge of #109720 - Dylan-DPC:rollup-u564m8s, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #108335 (rustdoc + rustdoc-json support for `feature(non_lifetime_binders)`)
 - #109534 (rustdoc: Unsupport importing `doc(primitive)` and `doc(keyword)` modules)
 - #109659 (llvm-wrapper: adapt for LLVM API change)
 - #109664 (Use span of placeholders in format_args!() expansion.)
 - #109683 (Check for overflow in `assemble_candidates_after_normalizing_self_ty`)
 - #109713 (Fix mismatched punctuation in Debug impl of AttrId)
 - #109718 (Rename `IndexVec::last` → `last_index`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-03-29 09:45:26 +00:00
Kleis Auke Wolthuizen
7b40eb71a9 Update Emscripten on CI to 2.0.5
`getentropy()` is available since Emscripten 2.0.5.

See:
https://github.com/emscripten-core/emscripten/pull/12240
2023-03-29 11:26:58 +02:00