1
Fork 0
Commit graph

260444 commits

Author SHA1 Message Date
Matthias Krüger
54bd3a7b8d
Rollup merge of #127301 - estebank:fix-suggestions, r=Urgau
Tweak some structured suggestions to be more verbose and accurate

Addressing some issues I found while working on #127282.
```
error: this URL is not a hyperlink
  --> $DIR/auxiliary/include-str-bare-urls.md:1:11
   |
LL | HEADS UP! https://example.com MUST SHOW UP IN THE STDERR FILE!
   |           ^^^^^^^^^^^^^^^^^^^
   |
   = note: bare URLs are not automatically turned into clickable links
note: the lint level is defined here
  --> $DIR/include-str-bare-urls.rs:14:9
   |
LL | #![deny(rustdoc::bare_urls)]
   |         ^^^^^^^^^^^^^^^^^^
help: use an automatic link instead
   |
LL | HEADS UP! <https://example.com> MUST SHOW UP IN THE STDERR FILE!
   |           +                   +
```
```
error[E0384]: cannot assign twice to immutable variable `v`
  --> $DIR/assign-imm-local-twice.rs:7:5
   |
LL |     v = 1;
   |     ----- first assignment to `v`
LL |     println!("v={}", v);
LL |     v = 2;
   |     ^^^^^ cannot assign twice to immutable variable
   |
help: consider making this binding mutable
   |
LL |     let mut v: isize;
   |         +++
```
```
error[E0393]: the type parameter `Rhs` must be explicitly specified
  --> $DIR/issue-22560.rs:9:23
   |
LL | trait Sub<Rhs=Self> {
   | ------------------- type parameter `Rhs` must be specified for this
...
LL | type Test = dyn Add + Sub;
   |                       ^^^
   |
   = note: because of the default `Self` reference, type parameters must be specified on object types
help: set the type parameter to the desired type
   |
LL | type Test = dyn Add + Sub<Rhs>;
   |                          +++++
```
```
error[E0596]: cannot borrow `v` as mutable, as it is not declared as mutable
  --> $DIR/issue-33819.rs:4:34
   |
LL |         Some(ref v) => { let a = &mut v; },
   |                                  ^^^^^^ cannot borrow as mutable
   |
help: try removing `&mut` here
   |
LL -         Some(ref v) => { let a = &mut v; },
LL +         Some(ref v) => { let a = v; },
   |
```
```
help: remove the invocation before committing it to a version control system
   |
LL -     dbg!();
   |
```
```
error[E0308]: mismatched types
  --> $DIR/issue-39974.rs:1:21
   |
LL | const LENGTH: f64 = 2;
   |                     ^ expected `f64`, found integer
   |
help: use a float literal
   |
LL | const LENGTH: f64 = 2.0;
   |                      ++
```
```
error[E0529]: expected an array or slice, found `Vec<i32>`
  --> $DIR/match-ergonomics.rs:8:9
   |
LL |         [&v] => {},
   |         ^^^^ pattern cannot match with input type `Vec<i32>`
   |
help: consider slicing here
   |
LL |     match x[..] {
   |            ++++
```
```
error[E0609]: no field `0` on type `[u32; 1]`
  --> $DIR/parenthesized-deref-suggestion.rs:10:21
   |
LL |     (x as [u32; 1]).0;
   |                     ^ unknown field
   |
help: instead of using tuple indexing, use array indexing
   |
LL |     (x as [u32; 1])[0];
   |                    ~ +
```
2024-07-04 18:16:24 +02:00
Matthias Krüger
d27136fb29
Rollup merge of #127283 - dingxiangfei2009:check-repr-transparent, r=davidtwco
Reject SmartPointer constructions not serving the purpose

Tracking issue: #123430

With this PR we will reject a row of malformed `SmartPointer` implementor candidates.

cc `@Darksonn` `@davidtwco` for context.
2024-07-04 18:16:23 +02:00
Matthias Krüger
e62956dea5
Rollup merge of #127037 - oli-obk:define_opaque_types18, r=davidtwco
Remove some duplicated tests

probably some parallel PR development that happened here, copying over the same examples from issues.
2024-07-04 18:16:23 +02:00
Matthias Krüger
b16a711191
Rollup merge of #126405 - He1pa:translate_builtin_macro_diag, r=davidtwco
Migrate some rustc_builtin_macros to SessionDiagnostic

<!--
If this PR is related to an unstable feature or an otherwise tracked effort,
please link to the relevant tracking issue here. If you don't know of a related
tracking issue or there are none, feel free to ignore this.

This PR will get automatically assigned to a reviewer. In case you would like
a specific user to review your work, you can assign it to them by using

    r​? <reviewer name>
-->

Part of https://github.com/rust-lang/rust/issues/100717.
pick up abandoned pr: #101935
`@rustbot` label +A-translation
2024-07-04 18:16:22 +02:00
Matthias Krüger
f0a0f8f7e8
Rollup merge of #123043 - GoldsteinE:fix/repr-c-dead-branches, r=oli-obk
Disable dead variant removal for `#[repr(C)]` enums.

This prevents removing dead branches from a `#[repr(C)]` enum (they now get discriminants allocated as if they were inhabited).

Implementation notes: ABI of something like

```rust
#[repr(C)]
enum Foo {
    Foo(!),
}
```

is still `Uninhabited`, but its layout is now computed as if all the branches were inhabited.
This seemed to me like a proper way to do it, especially given that ABI sanity check explicitly asserts that type-level uninhabitedness implies ABI uninhabitedness.

This probably needs some sort of FCP (given that it changes `#[repr(C)]` layout, which is a stable guarantee), but I’m not sure how to call for one or which team is the most relevant.

See https://github.com/rust-lang/unsafe-code-guidelines/issues/500.
2024-07-04 18:16:22 +02:00
bors
2b01d69212 Auto merge of #10155 - TheNeikos:feature/add_byte_char_slice_lint, r=Manishearth
Add new lint for byte char slices

This patch adds a new lint that checks for potentially harder to read byte char slices: `&[b'a', b'b']` and suggests to replace them with the easier to read `b"ab"` form.

Fixes #10147

---

changelog: new lint: [`byte_char_slices`]
[#10155](https://github.com/rust-lang/rust-clippy/pull/10155)
<!-- changelog_checked -->
2024-07-04 16:15:01 +00:00
Maybe Lapkin
a1f20f17c8 Properly normalize types in bck when checking pointer casts 2024-07-04 17:57:31 +02:00
Maybe Lapkin
9ef533e8de Fill in tracking issue 2024-07-04 17:57:31 +02:00
Maybe Lapkin
52ba120700 Remove unhelpful comments and add helpful ones 2024-07-04 17:57:31 +02:00
Maybe Lapkin
dc420a282b Use DiagSymbolList for a lint diagnostic 2024-07-04 17:57:31 +02:00
Maybe Lapkin
b16f803431 Make DiagSymbolList more generic 2024-07-04 17:57:31 +02:00
Maybe Lapkin
cf7032f751 Small fixes from review 2024-07-04 17:57:31 +02:00
Maybe Lapkin
06863eeebf Delete CloneAny from rust-analyzer's fork of AnyMap
...because it's very sketchy and causes FCWs.
In this case it *is* actually sound, but still.

I should write a better fork of anymap...
2024-07-04 17:57:31 +02:00
Maybe Lapkin
340d69be12 Align the changes to the lang decision 2024-07-04 17:57:29 +02:00
Waffle Lapkin
c7435571ad Actually check that the traits are the same for casting pointers to dyn _ 2024-07-04 17:56:09 +02:00
Waffle Lapkin
e85295c321 test blessing 2024-07-04 17:56:09 +02:00
Waffle Lapkin
eac4916c90 Disallow dyn Trait -> dyn Auto back
I think it's fine, but let's ask T-lang separately.
2024-07-04 17:56:09 +02:00
Maybe Waffle
bb651d358d blessings 2024-07-04 17:56:09 +02:00
Maybe Waffle
5645e8e285 Add more checks for pointers with vtable meta
The rules for casting `*mut X<dyn A>` -> `*mut Y<dyn B>` are as follows:
- If `B` has a principal
  - `A` must have exactly the same principal (including generics)
  - Auto traits of `B` must be a subset of autotraits in `A`

Note that `X<_>` and `Y<_>` can be identity, or arbitrary structs with last field being the dyn type.
The lifetime of the trait object itself (`dyn ... + 'a`) is not checked.

This prevents a few soundness issues with `#![feature(arbitrary_self_types)]` and trait upcasting.
Namely, these checks make sure that vtable is always valid for the pointee.
2024-07-04 17:56:09 +02:00
Maybe Waffle
9e8ef92da0 Add tests for *const Trait<'a> -> *const Trait<'b> and similar casts 2024-07-04 17:56:08 +02:00
Maybe Waffle
d06cf5b399 Forbid casts of raw pointers to trait objects with the same trait, but different args 2024-07-04 17:56:08 +02:00
Maybe Waffle
36b1f4411d Add a test for *const Tr<A> to *const Tr<B> casts 2024-07-04 17:56:08 +02:00
Oneirical
e45d72dee0 rewrite target-cpu-native to rmake 2024-07-04 11:38:24 -04:00
Oneirical
5cddb156d1 rewrite target-specs to rmake 2024-07-04 11:38:24 -04:00
bors
9f877c9cd2 Auto merge of #127170 - bjorn3:no_specialize_index_borrowck, r=michaelwoerister
Stop using specialization in rustc_index and rustc_borrowck

For rustc_borrowck the version with specialization isn't much more readable anyway IMO. For rustc_index it probably doesn't affect perf in any noticeable way anyway.
2024-07-04 14:24:43 +00:00
Oneirical
3ea36f5bb6 add shallow_find_files helper function to run-make-support 2024-07-04 10:05:56 -04:00
Oneirical
b167a15d64 rewrite rmeta-preferred to rmake 2024-07-04 10:05:56 -04:00
Oneirical
5e23dfea9d rewrite and rename issue-40535 to rmake 2024-07-04 10:05:55 -04:00
Oneirical
651f02363d rewrite optimization-remarks-dir to rmake 2024-07-04 10:05:37 -04:00
Oneirical
73d7dc7f22 rewrite optimization-remarks-dir-pgo to rmake 2024-07-04 10:05:37 -04:00
Oneirical
40cad01f2f rewrite and rename include_bytes_deps to rmake 2024-07-04 10:05:37 -04:00
mu001999
0adb82528f Improve dead code analysis 2024-07-04 22:05:00 +08:00
Chris Denton
14f4ed2ba3
Add comments to windows_targets.rs 2024-07-04 13:27:24 +00:00
Jakub Beránek
f933d789b7 Add a shortcut helper function command for creating commands
This is simply a quality-of-life improvement to make command creation in bootstrap a bit shorter and more discoverable.
2024-07-04 15:24:45 +02:00
Jakub Beránek
73660649cd Add run method to BootstrapCommand
This makes it easier to use commands in a "Fluent-API" style, and also removes the need for the `AsMut` trait hack that
was used before to allow passing both `BootstrapCommand` and `&mut BootstrapCommand` to `Builder::run`.
The `Builder::run` method was still kept and can be used explicitly, if needed for some reason.
2024-07-04 15:21:07 +02:00
Marcel Müller
88c4a22480
New Lint: byte_char_slices
This patch adds a new lint that checks for potentially harder to read
byte char slices: `&[b'a', b'b']` and suggests to replace them with the
easier to read `b"ab"` form.

Signed-Off-By: Marcel Müller <m.mueller@ifm.com>
Co-authored-by: Matthias Beyer <matthias.beyer@ifm.com>

Use iterator to skip validation

Signed-off-by: Marcel Müller <m.mueller@ifm.com>
Suggested-by: Alex Macleod <alex@macleod.io>

Convert quote escapes to proper form

Signed-off-by: Marcel Müller <m.mueller@ifm.com>

Add more convertable test cases

Signed-off-by: Marcel Müller <m.mueller@ifm.com>
2024-07-04 14:31:15 +02:00
Oli Scherer
0d54fe0d02 Remove a use of StructuredDiag, which is incompatible with automatic error tainting and error translations 2024-07-04 12:20:51 +00:00
Chris Denton
34860a56f0
Update windows-bindgen to 0.58.0 2024-07-04 12:18:38 +00:00
Ralf Jung
9ba492f279 also remove redundant requirements from offset() 2024-07-04 14:14:18 +02:00
Ralf Jung
273d253ce6 offset_from: "the difference must fit in an isize" is a corollary
also, isize::MIN is an impossible distance
2024-07-04 14:12:23 +02:00
bors
e2cf31a614 Auto merge of #127120 - Kobzol:bootstrap-cmd-refactor-3, r=onur-ozkan
Bootstrap command refactoring: consolidate output modes (step 3)

This PR is a continuation to https://github.com/rust-lang/rust/pull/126731. It consolidates the output modes of bootstrap (`Print` vs `CaptureAll` vs `CaptureStdout`) and simplifies the logic around error printing (now a command error is always printed if the failure is not ignored). It also ports even more usages of `Command` to `BootstrapCommand`, most notably the git helpers and many usages of the `output` function.

The last commit was added because the third commit made two variants of the `Tool` enum unused (no idea why, but it seems to have been a false positive that they were used before).

It can be reviewed now, but I would wait with merging until at least a few days after https://github.com/rust-lang/rust/pull/126731, just to catch any potential issues from that PR before we move further.

As a next step, I want to clean up the API of the command a little bit to make usage easier (currently it's a bit verbose), and then continue with the rest of the tasks from the tracking issue.

As always, best reviewed commit by commit.

Tracking issue: https://github.com/rust-lang/rust/issues/126819

r? `@onur-ozkan`

try-job: aarch64-apple
2024-07-04 10:54:22 +00:00
Jakub Beránek
410f760ed5 Make CI more agnostic of the owning GitHub organization
This should make it possible to switch running `auto` and `try` builds from `rust-lang-ci` to `rust-lang`.
2024-07-04 12:34:07 +02:00
bors
a3460e23ea Auto merge of #3732 - JoJoDeveloping:tree-borrows-protector-end-write, r=RalfJung
TB: Refine protector end semantics

Tree Borrows has protector end tag semantics, namely that protectors ending cause a [special implicit read](https://perso.crans.org/vanille/treebor/diff.0.html) on all locations protected by that protector that have actually been accessed. See also #3067.

While this is enough for ensuring protectors allow adding/reordering reads, it does not prove that one can reorder writes. For this, we need to make this stronger, by making this implicit read be a write in cases when there was a write to the location protected by that protector, i.e. if the permission is `Active`.

There is a test that shows why this behavior is necessary, see `tests/fail/tree_borrows/protector-write-lazy.rs`.
2024-07-04 10:31:24 +00:00
Johannes Hostert
02bec40930
TB: protector end semantics never causes immediate UB 2024-07-04 12:20:14 +02:00
yukang
87b741549c trivial update on tidy bless note 2024-07-04 10:07:22 +00:00
Johannes Hostert
0a86e79664
Add UI test for protector end write semantics 2024-07-04 12:05:33 +02:00
Johannes Hostert
8ef2c6c6af
TB: Make FnEntry access on protected locations be a write under certain circumstances 2024-07-04 12:05:23 +02:00
yukang
fe5581dd31 Fix import suggestion ice 2024-07-04 09:55:00 +00:00
schvv31n
12f29e991a added built-in var to jsondocck 2024-07-04 10:18:57 +01:00
Guillaume Gomez
1471532131 Allow to have different types for arguments of Rustc::remap_path_prefix 2024-07-04 11:07:19 +02:00