Commit graph

232696 commits

Author SHA1 Message Date
Philipp Krones
7137a09806
Merge commit '080b587854' into clippyup 2023-08-24 21:32:12 +02:00
bors
080b587854 Auto merge of #11398 - flip1995:rustup, r=flip1995
Rustup

r? `@ghost`

changelog: none
2023-08-24 19:10:31 +00:00
Philipp Krones
9334e5d5c0
Bump nightly version -> 2023-08-24 2023-08-24 21:06:43 +02:00
Philipp Krones
da06825124
Bump Clippy version -> 0.1.74 2023-08-24 21:06:31 +02:00
Philipp Krones
e1ec41b217
Fix dogfood issues 2023-08-24 21:06:18 +02:00
Philipp Krones
ef4d64f1bd
Merge remote-tracking branch 'upstream/master' into rustup 2023-08-24 21:04:57 +02:00
bors
202c846394 Auto merge of #11397 - xFrednet:changelog-bump-rust-1-72, r=Centri3
Update changelog stable note

Roses are red,
violets are blue,
new release,
tiny todo

---

![cat gif](https://cataas.com/cat/SbbeZwoC81vSTzBX)

---

changelog: none
2023-08-24 18:56:13 +00:00
xFrednet
fe38aaad66
Update changelog stable note 2023-08-24 20:41:26 +02:00
bors
df68b71327 Auto merge of #11362 - y21:superfluous_impl, r=xFrednet
new lint: `implied_bounds_in_impls`

Closes #10849

A new lint that looks for explicitly specified bounds that are already implied by other bounds in `impl Trait` return position types.
One example, as shown in the linked example, would be
```rs
fn foo<T>(x: T) -> impl Deref<Target = T> + DerefMut<Target = T> {
    Box::new(x)
}
```
`DerefMut<Target = T>` requires  `Deref<Target = T>` to be wellformed, so specifying `Deref` there is unnecessary.

This currently "ignores" (i.e., does not lint at all) transitive supertrait bounds (e.g. `trait A {} trait B: A {} trait C: B {}`, then having an `impl A + C` type), because that seems a bit more difficult and I think this isn't technically a blocker. It leads to FNs, but shouldn't bring any FPs

changelog: new lint [`implied_bounds_in_impls`]
2023-08-24 18:10:42 +00:00
bors
aa5dbee3eb Auto merge of #115147 - estebank:issue-114311, r=davidtwco
Suggest mutable borrow on read only for-loop that should be mutable

```
error[E0596]: cannot borrow `*test` as mutable, as it is behind a `&` reference
  --> $DIR/suggest-mut-iterator.rs:22:9
   |
LL |     for test in &tests {
   |                 ------ this iterator yields `&` references
LL |         test.add(2);
   |         ^^^^ `test` is a `&` reference, so the data it refers to cannot be borrowed as mutable
   |
help: use a mutable iterator instead
   |
LL |     for test in &mut tests {
   |                  +++
```

Fix #114311.
2023-08-24 15:05:17 +00:00
bors
18be2728bd Auto merge of #115131 - frank-king:feature/unnamed-fields-lite, r=petrochenkov
Parse unnamed fields and anonymous structs or unions (no-recovery)

It is part of #114782 which implements #49804. Only parse anonymous structs or unions in struct field definition positions.

r? `@petrochenkov`
2023-08-24 12:52:35 +00:00
bors
8a6b67f988 Auto merge of #115094 - Mark-Simulacrum:bootstrap-update, r=ozkanonur
Update bootstrap compiler to 1.73.0 beta
2023-08-24 11:10:52 +00:00
bors
0b31792ef1 Auto merge of #114297 - Kobzol:llvm-17-host, r=nikic
Update x64 Linux host compiler to LLVM 17

This PR updates the LLVM host compiler on 64-bit Linux to version 17.

r? `@ghost`
2023-08-24 06:00:35 +00:00
bors
9bd60a60ce Auto merge of #115078 - camelid:tydef-to-alias, r=aDotInTheVoid,GuillaumeGomez
rustdoc: Rename typedef to type alias

This matches the name used by the [Rust Reference][1], which is also what
people usually call these items.

[1]: https://doc.rust-lang.org/reference/items/type-aliases.html

r? `@GuillaumeGomez`
2023-08-24 04:13:28 +00:00
Frank King
868706d9b5 Parse unnamed fields and anonymous structs or unions
Anonymous structs or unions are only allowed in struct field
definitions.

Co-authored-by: carbotaniuman <41451839+carbotaniuman@users.noreply.github.com>
2023-08-24 11:17:54 +08:00
bors
840ed5d133 Auto merge of #114860 - Zoxc:sharded-layout, r=SparrowLii
Make `Sharded` an enum and specialize it for the single thread case

This changes `Sharded` to use a single shard by an enum, reducing the size of `Sharded` for greater cache efficiency.

Performance improvement with 1 thread and `cfg(parallel_compiler)`:
<table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.7009s</td><td align="right">1.6748s</td><td align="right">💚  -1.53%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2525s</td><td align="right">0.2451s</td><td align="right">💚  -2.90%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.9519s</td><td align="right">0.9353s</td><td align="right">💚  -1.74%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.5504s</td><td align="right">1.5280s</td><td align="right">💚  -1.45%</td></tr><tr><td>🟣 <b>syntex_syntax</b>:check</td><td align="right">5.9536s</td><td align="right">5.8873s</td><td align="right">💚  -1.11%</td></tr><tr><td>Total</td><td align="right">10.4092s</td><td align="right">10.2706s</td><td align="right">💚  -1.33%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9825s</td><td align="right">💚  -1.75%</td></tr></table>

I did see an unexpected 0.23% change for the serial compiler, so this could use a perf run to see if that reproduces.

cc `@SparrowLii`
2023-08-24 02:24:25 +00:00
bors
c9db1f804b Auto merge of #115012 - Zoxc:thir-check-root, r=cjgillot
Ensure that THIR unsafety check is done before stealing it

This ensures that THIR unsafety check is done before stealing it by running it on the typeck root instead of on a closure, which does nothing.

Fixes https://github.com/rust-lang/rust/issues/111520
2023-08-24 00:42:46 +00:00
Mark Rousskov
0a916062aa Bump cfg(bootstrap) 2023-08-23 20:05:14 -04:00
bors
4410868798 Auto merge of #106511 - MaskRay:gotpcrelx, r=nikic
Default relax_elf_relocations to true

This option tells LLVM to emit relaxable relocation types R_X86_64_GOTPCRELX/R_X86_64_REX_GOTPCRELX/R_386_GOT32X in applicable cases. True matches Clang's CMake default since 2020-08 [1] and latest LLVM default[2].

This also works around a GNU ld<2.41 issue[2] when using general-dynamic/local-dynamic TLS models in `-Z plt=no` mode with latest LLVM.

[1]: c41a18cf61
[2]: 2aedfdd9b8
[3]: https://sourceware.org/bugzilla/show_bug.cgi?id=24784
2023-08-23 22:26:31 +00:00
Esteban Küber
c1a7af0f2a Suggest mutable borrow on read only for-loop that should be mutable
```
error[E0596]: cannot borrow `*test` as mutable, as it is behind a `&` reference
  --> $DIR/suggest-mut-iterator.rs:22:9
   |
LL |     for test in &tests {
   |                 ------ this iterator yields `&` references
LL |         test.add(2);
   |         ^^^^ `test` is a `&` reference, so the data it refers to cannot be borrowed as mutable
   |
help: use a mutable iterator instead
   |
LL |     for test in &mut tests {
   |                  +++
```

Address #114311.
2023-08-23 21:46:18 +00:00
Noah Lev
912d11d4d1 Fix rustdoc-json tests 2023-08-23 11:52:49 -07:00
Noah Lev
d4ab99d946 rustdoc: Rename typedef to type alias in jsondoclint 2023-08-23 11:47:35 -07:00
Fangrui Song
f3d81917fc Default relax_elf_relocations to true
This option tells LLVM to emit relaxable relocation types
R_X86_64_GOTPCRELX/R_X86_64_REX_GOTPCRELX/R_386_GOT32X in applicable cases. True
matches Clang's CMake default since 2020-08 [1] and latest LLVM default[2].

This also works around a GNU ld<2.41 issue[3] when using
general-dynamic/local-dynamic TLS models in `-Z plt=no` mode with latest LLVM.

[1]: c41a18cf61
[2]: 2aedfdd9b8
[3]: https://sourceware.org/bugzilla/show_bug.cgi?id=24784
2023-08-23 11:12:30 -07:00
bors
249595b752 Auto merge of #115112 - tmandry:backtrace-0369, r=compiler-errors
Bump backtrace to 0.3.69
2023-08-23 18:01:35 +00:00
bors
8e8231f64e Auto merge of #115137 - GuillaumeGomez:rollup-37jqoyg, r=GuillaumeGomez
Rollup of 6 pull requests

Successful merges:

 - #114696 (Fix a pthread_t handle leak #114610)
 - #115102 (Improve note for the `invalid_reference_casting` lint)
 - #115103 (Disable bootstrap rustc version check)
 - #115106 (ArchiveWrapper: handle LLVM API update)
 - #115109 (Skip ExpandYamlAnchors when the config is missing)
 - #115135 (Rustdoc: Add unstable --no-html-source flag)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-23 16:10:43 +00:00
Guillaume Gomez
5cbc00fb7e
Rollup merge of #115135 - GuillaumeGomez:no-html-source-flag, r=notriddle
Rustdoc: Add unstable --no-html-source flag

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

This is the equivalent of `#![doc(no_html_source)]` but on the command-line. It disables the generation of the source pages (and of the links pointing to them as well).

The motivation behind this is to enable to reduce documentation size when generating it in some locations without enforcing this to end users or adding a new feature to enable/disable the crate attribute.

r? `@notriddle`
2023-08-23 17:46:35 +02:00
Guillaume Gomez
b88610fdb7
Rollup merge of #115109 - cuviper:yaml-404, r=albertlarsan68
Skip ExpandYamlAnchors when the config is missing

The dist-src tarball does not include `.github/` at all, so we can't
check whether it needs to be regenerated.
2023-08-23 17:46:35 +02:00
Guillaume Gomez
8c24ce115e
Rollup merge of #115106 - durin42:llvm-18-symtabwritingmode, r=nikic
ArchiveWrapper: handle LLVM API update

In llvm/llvm-project@f740bcb370 a boolean parameter changed to an enum.

r? ``@nikic``
``@rustbot`` label: +llvm-main
2023-08-23 17:46:35 +02:00
Guillaume Gomez
b3949c0174
Rollup merge of #115103 - djkoloski:disable_bootstrap_version_check, r=compiler-errors
Disable bootstrap rustc version check

Mitigates #115065
2023-08-23 17:46:34 +02:00
Guillaume Gomez
c9dbff2f42
Rollup merge of #115102 - Urgau:invalid_ref_casting-book-note, r=est31
Improve note for the `invalid_reference_casting` lint

This PR add link to the book interior mutability chapter, https://doc.rust-lang.org/book/ch15-05-interior-mutability.html; this is done to guide peoples to a place with many useful information and context.

*Note that this isn't the first occurrence of a link to the book in [tests outputs](https://github.com/search?q=repo%3Arust-lang%2Frust+book+path%3A%2F%5Etests%5C%2Fui%5C%2F%2F&type=code).*

r? `@est31`
2023-08-23 17:46:34 +02:00
Guillaume Gomez
128ff0897b
Rollup merge of #114696 - g0djan:godjan/fix_114610, r=Mark-Simulacrum
Fix a pthread_t handle leak #114610

https://github.com/rust-lang/rust/issues/114610

Ran the tests as described in https://github.com/rust-lang/rust/blob/master/src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md?plain=1#L125
2023-08-23 17:46:33 +02:00
y21
12275713d5 support inherent impls and trait impls 2023-08-23 17:06:55 +02:00
y21
09506f49c1 rename lint, docs, improve diagnostics 2023-08-23 17:06:55 +02:00
y21
2ebff58969 make generics work
fix compile error in doc example
2023-08-23 17:05:55 +02:00
y21
42bd6d7af3 new lint: implied_bounds_in_impl 2023-08-23 17:05:55 +02:00
Jakub Beránek
9cabc91a5f Use LLVM 17 as the host compiler 2023-08-23 16:56:55 +02:00
Guillaume Gomez
73ccfc5683 Update run-make/issue-88756-default-output test 2023-08-23 16:33:07 +02:00
Guillaume Gomez
d3f35e96c1 Add test for --no-html-source flag 2023-08-23 15:54:04 +02:00
Guillaume Gomez
7ab27c5ed5 Add unstable --no-html-source rustdoc flag 2023-08-23 15:53:48 +02:00
bors
97fff1f2ed Auto merge of #114790 - taiki-e:asm-maybe-uninit, r=Amanieu
Allow MaybeUninit in input and output of inline assembly

**Motivation:**

As part of the work to remove UBs from crossbeam's AtomicCell, I'm writing a library to implement atomic operations on MaybeUnint using inline assembly ([atomic-maybe-uninit](https://github.com/taiki-e/atomic-maybe-uninit), https://github.com/crossbeam-rs/crossbeam/pull/1015).

However, currently, MaybeUnint cannot be used in input&output of inline assembly, so when processing MaybeUninit, values must be [passed through memory](https://github.com/taiki-e/atomic-maybe-uninit/blob/main/src/arch/aarch64.rs#L121-L122). It is inefficient and microbenchmarks have [actually shown significant performance degradation](https://github.com/crossbeam-rs/crossbeam/pull/1015#issuecomment-1676549870).

It would be nice if we could allow MaybeUninit in input and output of inline assembly.

---

This PR changed the type check in rustc_hir_analysis to allow `MaybeUnint<int | float | ptr | fn ptr | simd vector>` in input and output of inline assembly and added a simple test.

To be honest, I'm not sure that this is the correct way to do it, because this is like doing transmute to integers/floats/etc from MaybeUninit on the compiler side. EDIT: [this seems fine](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!/near/384662900)

r? `@Amanieu`
cc `@thomcc` (because you [had previously proposed this](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!))
2023-08-23 13:40:41 +00:00
Taiki Endo
03fd2d4379 Allow MaybeUninit in input and output of inline assembly 2023-08-23 21:57:18 +09:00
bors
4932d05733 Auto merge of #11373 - Red-Rapious:master, r=blyxyas,y21
Added new lint: `reserve_after_initialization`

Closes https://github.com/rust-lang/rust-clippy/issues/11330.

A new lint that informs the user about a more concise way to create a vector with a known capacity.
Example:
```rust
let mut v: Vec<usize> = vec![];
v.reserve(10);
```

Produces the following help:
```rust
  |
2 | /     let mut v: Vec<usize> = vec![];
3 | |     v.reserve(10);
  | |__________________^ help: consider using `Vec::with_capacity(space_hint)`: `let v: Vec<usize> = Vec::with_capacity(10);`
  |
```

And can be rewritten as:
```rust
let v: Vec<usize> = Vec::with_capacity(10);
```

changelog: new lint [`reserve_after_initialization`]
2023-08-23 12:06:41 +00:00
Red Rapious
f3c5877302 Put is_from_proc_macro last 2023-08-23 13:46:12 +02:00
bors
544dea6aee Auto merge of #115123 - cuviper:llvm-17-rc3, r=nikic
Update LLVM submodule to 17.0.0-rc3
2023-08-23 11:20:51 +00:00
Urgau
aa7730003e Improve note for the invalid_reference_casting lint
Add link to the book interior mutability chapter,
https://doc.rust-lang.org/book/ch15-05-interior-mutability.html.
2023-08-23 11:27:33 +02:00
bors
3475fa74e1 Auto merge of #113986 - MaskRay:freebsd, r=nikic
ci: Update FreeBSD and illumos binutils to 2.40

The current old 2.25 seems to cause trouble to #106511.

Install texinfo to dist-x86_64-freebsd/Dockerfile like other containers
to fix
```
  MAKEINFO doc/bfd.info
/binutils/binutils-2.40/missing: 81: /binutils/binutils-2.40/missing: makeinfo: not found
WARNING: 'makeinfo' is missing on your system.
```

---

https://www.freshports.org/devel/binutils uses 2.40 for FreeBSD 12.x as well.

`@nikic`
2023-08-23 09:02:08 +00:00
bors
edfee16ade Auto merge of #11379 - popzxc:fix-tuple-array-conversions, r=xFrednet
Fix tuple_array_conversions lint on nightly

```
changelog: ICE: [`tuple_array_conversions`]: Don't expect array length to always be usize
```

tl;dr: changed [`Const::eval_target_usize`](https://github.com/rust-lang/rust/blob/master/compiler/rustc_middle/src/ty/consts.rs#L359) to [`Consts::try_eval_target_usize`](https://github.com/rust-lang/rust/blob/master/compiler/rustc_middle/src/ty/consts.rs#L327) to get rid of ICE.

I have encountered a problem with clippy: it caught ICE when working with a codebase that uses a lot of nightly features.
Here's a (stripped) ICE info:

```
error: internal compiler error: /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/compiler/rustc_middle/src/ty/consts.rs:361:32: expected usize, got Const { ty: usize, kind: N/#1 }

thread 'rustc' panicked at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/compiler/rustc_errors/src/lib.rs:1635:9:
Box<dyn Any>
stack backtrace:
...
  16:        0x110b9c590 - rustc_middle[449edf845976488d]::util:🐛:bug_fmt
  17:        0x102f76ae0 - clippy_lints[71754038dd04c2d2]::tuple_array_conversions::all_bindings_are_for_conv
...
```

I don't really know what's going on low-level-wise, but seems like this lin assumed that the length of the array can always be treated as `usize`, and *I assume* this doesn't play well with `feat(generic_const_exprs)`.

I wasn't able to build a minimal reproducible example, but locally this fix does resolve the issue.
2023-08-23 07:20:41 +00:00
bors
810573919f Auto merge of #115126 - Dylan-DPC:rollup-g6w3qjd, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #114930 (Automatically add OS labels to std PRs)
 - #115053 (docs: Add example, reference link for `type` keyword.)
 - #115092 (Add generics_of to smir)
 - #115096 (Add regression test for not `memcpy`ing padding bytes)
 - #115100 (Add support for `ptr::write`s for the `invalid_reference_casting` lint)
 - #115114 (Contents of reachable statics is reachable)
 - #115122 (Fix clippy lint for identical `if`/`else` contraining `?` expressions)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-23 07:16:47 +00:00
Igor Aleksanov
f0eaa66263 Add a test for tuple_array_conversion 2023-08-23 09:54:50 +04:00
Dylan DPC
867a12d994
Rollup merge of #115122 - estebank:fix-clippy, r=Manishearth
Fix clippy lint for identical `if`/`else` contraining `?` expressions

Follow up to #114819.
2023-08-23 05:35:18 +00:00