Commit Graph

231553 Commits

Author SHA1 Message Date
bors
84ec2633de Auto merge of #113902 - Enselic:lint-recursive-drop, r=oli-obk
Make `unconditional_recursion` warning detect recursive drops

Closes #55388

Also closes #50049 unless we want to keep it for the second example which this PR does not solve, but I think it is better to track that work in #57965.

r? `@oli-obk` since you are the mentor for #55388

Unresolved questions:
- [x] There are two false positives that must be fixed before merging (see diff). I suspect the best way to solve them is to perform analysis after drop elaboration instead of before, as now, but I have not explored that any further yet. Could that be an option? **Answer:** Yes, that solved the problem.

`@rustbot` label +T-compiler +C-enhancement +A-lint
2023-08-07 13:39:28 +00:00
bors
139b49b995 Auto merge of #114576 - lnicola:sync-from-ra, r=lnicola
⬆️ `rust-analyzer`

r? `@ghost`
2023-08-07 09:16:10 +00:00
Laurențiu Nicola
a42f832312 Merge commit 'baee6b338b0ea076cd7a9f18d47f175dd2ba0e5d' into sync-from-ra 2023-08-07 12:03:15 +03:00
bors
adb15a20ac Auto merge of #114560 - RalfJung:miri, r=RalfJung
update Miri
2023-08-07 07:25:51 +00:00
bors
4a71a05d52 Auto merge of #114569 - matthiaskrgr:rollup-p8tcxtz, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #98935 (Implement `Option::take_if`)
 - #114093 (Add regression test for `echo 'mod unknown;' | rustc -`)
 - #114229 (Nest tests/codegen/sanitizer*.rs tests in sanitizer dir)
 - #114230 (Nest other codegen test topics)
 - #114362 (string.rs: remove "Basic usage" text)
 - #114365 (str.rs: remove "Basic usage" text)
 - #114382 (Add a new `compare_bytes` intrinsic instead of calling `memcmp` directly)
 - #114549 (Style fix and refactor on resolve diagnostics)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-07 05:06:51 +00:00
Matthias Krüger
d804b74c6c
Rollup merge of #114549 - chenyukang:yukang-review-resolve-part, r=petrochenkov
Style fix and refactor on resolve diagnostics

- coding style
- refactor api of `span_look_ahead`
2023-08-07 05:29:13 +02:00
Matthias Krüger
cbe2522652
Rollup merge of #114382 - scottmcm:compare-bytes-intrinsic, r=cjgillot
Add a new `compare_bytes` intrinsic instead of calling `memcmp` directly

As discussed in #113435, this lets the backends be the place that can have the "don't call the function if n == 0" logic, if it's needed for the target.  (I didn't actually *add* those checks, though, since as I understood it we didn't actually need them on known targets?)

Doing this also let me make it `const` (unstable), which I don't think `extern "C" fn memcmp` can be.

cc `@RalfJung` `@Amanieu`
2023-08-07 05:29:12 +02:00
Matthias Krüger
f5df519fe7
Rollup merge of #114365 - tshepang:patch-6, r=Mark-Simulacrum
str.rs: remove "Basic usage" text

Only one example is given
2023-08-07 05:29:12 +02:00
Matthias Krüger
59d2a4b1e5
Rollup merge of #114362 - tshepang:patch-1, r=Mark-Simulacrum
string.rs: remove "Basic usage" text

Only a single example is given
2023-08-07 05:29:11 +02:00
Matthias Krüger
fe1c3a1a5e
Rollup merge of #114230 - workingjubilee:codegen-tests-that-nest, r=Mark-Simulacrum
Nest other codegen test topics

This PR is like rust-lang/rust#114229 in that it mostly pushes codegen tests around, shoving them into their own directories, but because all of the changes are very simple cleanups I pulled them into a separate PR. The other PR might involve actually evaluating the correctness of the test after changes, but here it is mostly a matter of taste. The only "functional" change is deleting a few tests that... hinge on a version of LLVM that we don't support (as of rust-lang/rust#114148 anyways).

I considered a few different ways to group other topics but I feel the question of whether `tests/codegen/{vec,array,slice}` should exist is more subtle than these choices, as it might be better to group such related tests by other topics like bounds check elision, thus I avoided making it.
2023-08-07 05:29:11 +02:00
Matthias Krüger
137177386b
Rollup merge of #114229 - workingjubilee:nest-sanitizer-dir, r=Mark-Simulacrum
Nest tests/codegen/sanitizer*.rs tests in sanitizer dir

The sanitizer tests are the largest and most meticulously tested set of tests in tests/codegen. That's good! They all clearly belong to a subject and thus could go in a directory, but are not, instead being placed simply in tests/codegen. That's bad! Fix this by placing them in their own directory and renaming them to be less repetitive after that move.

A few tests are brittle, and embed their filename in the test's checks. This is acceptable for the ones where it is used only two times, but one test embeds the test's mangled filename in the test *over 50 times*! This may have been one of the things discouraging anyone from moving it, and thus from moving the set. Fortunately, I have some knowledge of Itanium mangling (involuntarily), regex, and the FileCheck syntax. With a capturing variable, FileCheck allows us to now move this test around again without diffing it on ~50 lines, while still guaranteeing that the mangled substring is the same each time.

This also clarifies why the substring is repeated a zillion times, instead of being cryptic. They don't call it mangling because the result is pretty and easy to understand, but now it is slightly easier! Yay descriptive variables!
2023-08-07 05:29:10 +02:00
Matthias Krüger
61c55e37cc
Rollup merge of #114093 - Enselic:stdin-unknown-mod, r=Mark-Simulacrum
Add regression test for `echo 'mod unknown;' | rustc -`

Closes #65601

The bug is fixed since long ago, probably by #69838 (see https://github.com/rust-lang/rust/issues/65601#issuecomment-1650508071 for more details).
Add a regression test so we can close the issue.
2023-08-07 05:29:10 +02:00
Matthias Krüger
bab20b410e
Rollup merge of #98935 - kellerkindt:option_retain, r=Mark-Simulacrum
Implement `Option::take_if`

Tracking issue: #98934
ACP: rust-lang/libs-team#70 [accepted]
2023-08-07 05:29:09 +02:00
bors
9fca8e7517 Auto merge of #114206 - sethp:patch-1, r=Mark-Simulacrum
fix(ci): Ensure idempotence of user creation

Previously, re-running `run.sh` in the same container would fail at the useradd step, because the user already exists. Instead, change that step to "create if not exists" semantics to ease interactive debugging of CI failures.

Split out from https://github.com/rust-lang/rust/pull/111891 per request by `@jackh726`
2023-08-07 03:22:14 +00:00
bors
2aae331706 Auto merge of #112916 - tgross35:patch-1, r=Mark-Simulacrum
Add more context to `quit_if_file_exists` in `configure.py` & delete config.toml in CI

If the `obj` directory isn't empty, the error message is subtle and not very helpful:

```
== clock drift check ==
  local time: Sun Jul  2 00:57:06 UTC 2023
  network time: Sun, 02 Jul 2023 00:57:06 GMT
== end clock drift check ==
sccache: Starting the server...
configure: error: Existing 'config.toml' detected.
== clock drift check ==
  local time: Sun Jul  2 00:57:06 UTC 2023
  network time: Sun, 02 Jul 2023 00:57:06 GMT
== end clock drift check ==
```

This makes it stand out and suggests how to resolve the issue:

```
== clock drift check ==
  local time: Sun Jul  2 02:11:30 UTC 2023
  network time: Sun, 02 Jul 2023 02:11:31 GMT
== end clock drift check ==
sccache: Starting the server...

configure: ERROR: Existing 'config.toml' detected. Exiting
Is objdir '/home/tmgross/projects/rust/obj' clean?

== clock drift check ==
  local time: Sun Jul  2 02:11:31 UTC 2023
  network time: Sun, 02 Jul 2023 02:11:31 GMT
== end clock drift check ==
```
2023-08-07 01:30:46 +00:00
bors
72c6b8d36f Auto merge of #114565 - matthiaskrgr:rollup-p7cjs3m, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #114535 (bump schannel, miow to drop windows-sys 0.42)
 - #114542 (interpret: use ConstPropNonsense for more const-prop induced issues)
 - #114543 (add tests for some fixed ConstProp ICEs)
 - #114550 (Generate better function argument names in global_allocator expansion)
 - #114556 (Issue numbers are enforced on active features; remove FIXME)
 - #114558 (Remove FIXME about NLL diagnostic that is already improved)

Failed merges:

 - #114485 (Add trait decls to SMIR)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-06 23:44:08 +00:00
scottmcm
75277a6606 Apply suggestions from code review
Co-authored-by: Ralf Jung <post@ralfj.de>
2023-08-06 15:47:40 -07:00
Scott McMurray
502af03445 Add a new compare_bytes intrinsic instead of calling memcmp directly 2023-08-06 15:47:40 -07:00
Matthias Krüger
f44f0279fa
Rollup merge of #114558 - Enselic:lifetime-diagnostic-fixed, r=cjgillot
Remove FIXME about NLL diagnostic that is already improved

The FIXME was added in #46984 when the diagnostic message looked like this:

    // FIXME(#46983): error message should be better
    &s.0 //~ ERROR free region `` does not outlive free region `'static`

The message was improved in #90667 and now looks like this:

    &s.0 //~ ERROR lifetime may not live long enough

but the FIXME was not removed. The issue #46983 about that diagnostics should be improved has been closed. We can remove the FIXME now.

(This PR was made for #44366.)
2023-08-07 00:06:08 +02:00
Matthias Krüger
44479d1b35
Rollup merge of #114556 - Enselic:issue-numbers-enforced, r=compiler-errors
Issue numbers are enforced on active features; remove FIXME

Since https://github.com/rust-lang/rust/pull/51090 tidy enforces that active features have an issue number, so remove the FIXME.

This PR is part of #44366 which is E-help-wanted.
2023-08-07 00:06:07 +02:00
Matthias Krüger
1ea9951b43
Rollup merge of #114550 - dtolnay:globalalloc, r=compiler-errors
Generate better function argument names in global_allocator expansion

Generated code for `#[global_allocator] static ALLOCATOR: Allocator = Allocator;`&mdash;

**Before:**

```rust
const _: () = {
    #[rustc_std_internal_symbol]
    unsafe fn __rust_alloc(arg0: usize, arg1: usize) -> *mut u8 {
        ::core::alloc::GlobalAlloc::alloc(
            &ALLOCATOR,
            ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1),
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_dealloc(arg0: *mut u8, arg1: usize, arg2: usize) -> () {
        ::core::alloc::GlobalAlloc::dealloc(
            &ALLOCATOR,
            arg0,
            ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2),
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_realloc(
        arg0: *mut u8,
        arg1: usize,
        arg2: usize,
        arg3: usize,
    ) -> *mut u8 {
        ::core::alloc::GlobalAlloc::realloc(
            &ALLOCATOR,
            arg0,
            ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2),
            arg3,
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_alloc_zeroed(arg0: usize, arg1: usize) -> *mut u8 {
        ::core::alloc::GlobalAlloc::alloc_zeroed(
            &ALLOCATOR,
            ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1),
        )
    }
};
```

**After:**

```rust
const _: () = {
    #[rustc_std_internal_symbol]
    unsafe fn __rust_alloc(size: usize, align: usize) -> *mut u8 {
        ::core::alloc::GlobalAlloc::alloc(
            &ALLOCATOR,
            ::core::alloc::Layout::from_size_align_unchecked(size, align),
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_dealloc(ptr: *mut u8, size: usize, align: usize) -> () {
        ::core::alloc::GlobalAlloc::dealloc(
            &ALLOCATOR,
            ptr,
            ::core::alloc::Layout::from_size_align_unchecked(size, align),
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_realloc(
        ptr: *mut u8,
        size: usize,
        align: usize,
        new_size: usize,
    ) -> *mut u8 {
        ::core::alloc::GlobalAlloc::realloc(
            &ALLOCATOR,
            ptr,
            ::core::alloc::Layout::from_size_align_unchecked(size, align),
            new_size,
        )
    }
    #[rustc_std_internal_symbol]
    unsafe fn __rust_alloc_zeroed(size: usize, align: usize) -> *mut u8 {
        ::core::alloc::GlobalAlloc::alloc_zeroed(
            &ALLOCATOR,
            ::core::alloc::Layout::from_size_align_unchecked(size, align),
        )
    }
};
```
2023-08-07 00:06:07 +02:00
Matthias Krüger
d720f93a62
Rollup merge of #114543 - RalfJung:test-96944, r=compiler-errors
add tests for some fixed ConstProp ICEs

Fixes https://github.com/rust-lang/rust/issues/96944
Fixes https://github.com/rust-lang/rust/issues/111353
2023-08-07 00:06:06 +02:00
Matthias Krüger
74dce18639
Rollup merge of #114542 - RalfJung:const-prop-nonsense, r=compiler-errors
interpret: use ConstPropNonsense for more const-prop induced issues
2023-08-07 00:06:06 +02:00
Matthias Krüger
22d142aecc
Rollup merge of #114535 - klensy:windows-sys-0-42, r=compiler-errors
bump schannel, miow to drop windows-sys 0.42

Changes contains almost only of update to windows-sys 0.48
https://github.com/steffengy/schannel-rs/compare/v0.1.21...v0.1.22
https://github.com/yoshuawuyts/miow/compare/v0.5.0...v0.6.0
2023-08-07 00:06:05 +02:00
bors
f3623871cf Auto merge of #114502 - cjgillot:steal-ctfe, r=oli-obk
Steal MIR for CTFE when possible.

Some bodies, like constants, have CTFE MIR but no optimized MIR.
In that case, have `mir_for_ctfe` steal the MIR instead of cloning it.
2023-08-06 22:02:12 +00:00
bors
85fbb57149 Auto merge of #114553 - matthiaskrgr:rollup-5yddunv, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #114466 (Add Allocation to SMIR)
 - #114505 (Add documentation to has_deref)
 - #114519 (use offset_of! to calculate dirent64 field offsets)
 - #114537 (Migrate GUI colors test to original CSS color format)
 - #114539 (linkchecker: Remove unneeded FIXME about intra-doc links)

Failed merges:

 - #114485 (Add trait decls to SMIR)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-08-06 19:46:31 +00:00
Martin Nordholts
8a7520995c Remove FIXME about NLL diagnostic that is already improved
The FIXME was added in 46984 when the diagnostic message looked like
this:

    // FIXME(#46983): error message should be better
    &s.0 //~ ERROR free region `` does not outlive free region `'static`

The message was improved in 90667 and now looks like this:

    &s.0 //~ ERROR lifetime may not live long enough

but the FIXME was not removed. The issue 46983 about that diagnostics
should be improved has been closed. We can remove the FIXME now.
2023-08-06 21:20:15 +02:00
bors
baee6b338b Auto merge of #15406 - lowr:fix/panic-missing-impl-self-ty, r=lnicola
Don't provide `generate_default_from_new` when impl self ty is missing

Also don't provide the assist when the `Default` trait can't be found.

Part of #15398
2023-08-06 18:30:09 +00:00
Ryo Yoshida
582917453b
Don't provide generate_default_from_new when impl self ty is missing
Also don't provide the assist when the `Default` trait can't be found.
2023-08-07 03:23:41 +09:00
bors
5973bfbd38 Auto merge of #114516 - cjgillot:direct-module-parent, r=compiler-errors
parent_module_from_def_id does not need to be a query.

r? `@ghost`
2023-08-06 18:04:04 +00:00
Martin Nordholts
2b9876bd6d Issue numbers are enforced on active features; remove FIXME 2023-08-06 20:01:23 +02:00
Matthias Krüger
f542163351
Rollup merge of #114539 - Enselic:unneeded-fixme, r=ehuss
linkchecker: Remove unneeded FIXME about intra-doc links

It was added by https://github.com/rust-lang/rust/pull/77971 but the adder [proposed](https://github.com/rust-lang/rust/pull/77971#issuecomment-710026798) that the added code is a good fallback to have in case rustdoc gets buggy, and I agree. So remove the FIXME.

This PR is part of #44366 which is E-help-wanted.

r? `@jyn514` since you added the FIXME

`@rustbot` label T-dev-tools
2023-08-06 17:26:31 +02:00
Matthias Krüger
0c98f15a94
Rollup merge of #114537 - GuillaumeGomez:migrate-gui-test-color-29, r=notriddle
Migrate GUI colors test to original CSS color format

Follow-up of https://github.com/rust-lang/rust/pull/111459.

r? ``@notriddle``
2023-08-06 17:26:30 +02:00
Matthias Krüger
3d1c36e917
Rollup merge of #114519 - the8472:dirent-offset-of, r=dtolnay
use offset_of! to calculate dirent64 field offsets

r? `@dtolnay`
2023-08-06 17:26:30 +02:00
Matthias Krüger
13de583583
Rollup merge of #114505 - ouz-a:cleanup_mir, r=RalfJung
Add documentation to has_deref

Documentation of `has_deref` needed some polish to be more clear about where it should be used and what's it's purpose.

cc https://github.com/rust-lang/rust/issues/114401

r? `@RalfJung`
2023-08-06 17:26:29 +02:00
Matthias Krüger
92c04217ba
Rollup merge of #114466 - ouz-a:smir_allocation, r=oli-obk
Add Allocation to SMIR

As it's discussed [here ](https://rust-lang.zulipchat.com/#narrow/stream/320896-project-stable-mir/topic/Representing.20Constants.20in.20smir)this is an attempt to cover Constants for smir in a different way compared to https://github.com/rust-lang/rust/pull/114342

cc https://github.com/rust-lang/project-stable-mir/issues/15

r? ``@oli-obk``
2023-08-06 17:26:28 +02:00
bors
e59540968e Auto merge of #113648 - aliemjay:opaque-binder-ice, r=oli-obk
don't replace opaque types under binders with infer vars

Fixes an ICE in the ui test code.

Fixes #109636
Fixes #109281
Fixes #86800

r? `@oli-obk`
2023-08-06 15:26:03 +00:00
yukang
eb0fcc5ad1 refactor on span_look_ahead 2023-08-06 22:44:11 +08:00
David Tolnay
704aa56ba0
Generate better function argument names in global_allocator expansion 2023-08-06 07:36:05 -07:00
ouz-a
6df546281b cleanup misinformation regarding has_deref 2023-08-06 17:29:09 +03:00
Ralf Jung
efd54ccf5a interpret: use ConstPropNonsense for more const-prop induced issues 2023-08-06 15:20:03 +02:00
Ralf Jung
0c595440e3 add test for issue #111353 2023-08-06 15:06:40 +02:00
Ralf Jung
09c71a5547 add test for issue #96944 2023-08-06 15:01:48 +02:00
Ali MJ Al-Nasrawy
2e83a72964 don't replace opaque types under binders with infer vars 2023-08-06 12:08:32 +00:00
ouz-a
b9a539e0a3 Add alocation to smir 2023-08-06 15:06:04 +03:00
Martin Nordholts
cf08888630 linkchecker: Remove unneeded FIXME about intra-doc links
It was added by 77971 but the adder proposed in that PR that the added
code is a good fallback to have in case rustdoc gets buggy, and I agree.
So remove the FIXME.
2023-08-06 13:28:43 +02:00
bors
bc720ad36b Auto merge of #114487 - compiler-errors:opaques-refactoring-idk, r=cjgillot
Consolidate opaque ty and async fn lowering code

The codepaths for lowering "regular" opaques and async fn were almost identical, modulo some bookkeeping that seemed pretty easy to consolidate.

r? `@cjgillot`
2023-08-06 11:16:31 +00:00
Guillaume Gomez
08ca8246f8 Migrate GUI colors test to original CSS color format 2023-08-06 12:46:35 +02:00
klensy
55935df22d bump schannel, miow to drop windows-sys 0.42 2023-08-06 13:24:59 +03:00
bors
a339ed184f Auto merge of #114528 - dtolnay:globalalloccast, r=cjgillot
Delete some useless casts from global_allocator expansion

These casts are from when #\[global_allocator\] needed to translate back and forth between `*mut u8` and `*mut Opaque`. This should have been cleaned up as part of f6ab74b8e7.

Difference to code generated by `#[global_allocator] static ALLOCATOR: Allocator = Allocator;`:

```diff
 const _: () = {
     #[rustc_std_internal_symbol]
     unsafe fn __rust_alloc(arg0: usize, arg1: usize) -> *mut u8 {
         ::core::alloc::GlobalAlloc::alloc(
             &ALLOCATOR,
             ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1),
-        ) as *mut u8
+        )
     }
     #[rustc_std_internal_symbol]
     unsafe fn __rust_dealloc(arg0: *mut u8, arg1: usize, arg2: usize) -> () {
         ::core::alloc::GlobalAlloc::dealloc(
             &ALLOCATOR,
-            arg0 as *mut u8,
+            arg0,
             ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2),
         )
     }
     #[rustc_std_internal_symbol]
     unsafe fn __rust_realloc(
         arg0: *mut u8,
         arg1: usize,
         arg2: usize,
         arg3: usize,
     ) -> *mut u8 {
         ::core::alloc::GlobalAlloc::realloc(
             &ALLOCATOR,
-            arg0 as *mut u8,
+            arg0,
             ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2),
             arg3,
-        ) as *mut u8
+        )
     }
     #[rustc_std_internal_symbol]
     unsafe fn __rust_alloc_zeroed(arg0: usize, arg1: usize) -> *mut u8 {
         ::core::alloc::GlobalAlloc::alloc_zeroed(
             &ALLOCATOR,
             ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1),
-        ) as *mut u8
+        )
     }
 };
```
2023-08-06 09:29:48 +00:00