Commit graph

271723 commits

Author SHA1 Message Date
Ralf Jung
aaa4e75f76
Merge pull request #4045 from CraftSpider/move-fdmap
Move FdTable to a common location and split off Unix behavior
2024-12-01 22:16:02 +00:00
Rune Tynan
244249e464 Make metadata a FileDescription operation 2024-12-01 13:50:10 -08:00
Rune Tynan
035777d477 Split unix-specific function into UnixFileDescription 2024-12-01 13:48:11 -08:00
Rune Tynan
374397f1bb Move FdTable to public location, fix up imports 2024-11-30 20:47:05 -08:00
Oli Scherer
b4744f8243
Merge pull request #4064 from klensy/ctrlc
remove ctrlc, unused
2024-11-28 13:13:01 +00:00
klensy
c2cb99378a remove ctrlc, unused 2024-11-28 14:02:03 +03:00
Ralf Jung
4624dadc20
Merge pull request #4063 from rust-lang/rustup-2024-11-28
Automatic Rustup
2024-11-28 08:05:16 +00:00
Ralf Jung
8e2d72bac8 silence clippy 2024-11-28 08:38:48 +01:00
The Miri Cronjob Bot
2039a9fac0 fmt 2024-11-28 05:06:38 +00:00
The Miri Cronjob Bot
45ed69e813 Merge from rustc 2024-11-28 05:05:22 +00:00
The Miri Cronjob Bot
79b4f25c34 Preparing for merge from rustc 2024-11-28 04:57:22 +00:00
bors
eddb717281 Auto merge of #133551 - matthiaskrgr:rollup-m0rr5oz, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #132410 (Some more refactorings towards removing driver queries)
 - #133418 (coverage: Store coverage source regions as `Span` until codegen)
 - #133498 (Add missing code examples on `LocalKey`)
 - #133518 (Structurally resolve before checking `!` in HIR typeck)
 - #133521 (Structurally resolve before matching on type of projection)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-28 00:51:37 +00:00
Matthias Krüger
5fc4f85f60
Rollup merge of #133521 - compiler-errors:structurally-resolve-cat-proj, r=lcnr
Structurally resolve before matching on type of projection

Another missing structural resolve in closure upvar analysis. I think it's better to place the normalization here rather than trying to guarantee that all types returned by the expr use visitor are structurally normalized, which I don't think we do now. Thoughts?

r? lcnr
2024-11-27 22:23:26 +01:00
Matthias Krüger
5d0ee56e88
Rollup merge of #133518 - compiler-errors:structurally-resolve-never, r=lcnr
Structurally resolve before checking `!` in HIR typeck

Some more missing structural resolves in HIR typeck :>

r? lcnr
2024-11-27 22:23:26 +01:00
Matthias Krüger
a8b690fada
Rollup merge of #133498 - GuillaumeGomez:missing-examples, r=joboet
Add missing code examples on `LocalKey`

r? ``@Amanieu``
2024-11-27 22:23:25 +01:00
Matthias Krüger
adf9b5fcd1
Rollup merge of #133418 - Zalathar:spans, r=jieyouxu
coverage: Store coverage source regions as `Span` until codegen

Historically, coverage spans were converted into line/column coordinates during the MIR instrumentation pass.

This PR moves that conversion step into codegen, so that coverage spans spend most of their time stored as `Span` instead.

In addition to being conceptually nicer, this also reduces the size of coverage mappings in MIR, because `Span` is smaller than 4x u32.

---

There should be no changes to coverage output.
2024-11-27 22:23:25 +01:00
Matthias Krüger
af1ca153d4
Rollup merge of #132410 - bjorn3:yet_another_driver_refactor_round, r=cjgillot
Some more refactorings towards removing driver queries

Follow up to https://github.com/rust-lang/rust/pull/127184

## Custom driver breaking change

The `after_analysis` callback is changed to accept `TyCtxt` instead of `Queries`. The only safe query in `Queries` to call at this point is `global_ctxt()` which allows you to enter the `TyCtxt` either way. To fix your custom driver, replace the `queries: &'tcx Queries<'tcx>` argument with `tcx: TyCtxt<'tcx>` and remove your `queries.global_ctxt().unwrap().enter(|tcx| { ... })` call and only keep the contents of the closure.

## Custom driver deprecation

The `after_crate_root_parsing` callback is now deprecated. Several custom drivers are incorrectly calling `queries.global_ctxt()` from inside of it, which causes some driver code to be skipped. As such I would like to either remove it in the future or if custom drivers still need it, change it to accept an `&rustc_ast::Crate` instead.
2024-11-27 22:23:24 +01:00
bors
66adeaf46b Auto merge of #133509 - Urgau:dangling_lint_perf, r=Noratrieb
Recover some lost performence from #132732

This PR reorders some conditions in the `dangling_pointers_from_temporaries` lint to avoid some potentially expensive query call, in particular those who could involve some metadata decoding from disk.

cc https://github.com/rust-lang/rust/pull/132732#issuecomment-2499990683
cc `@Kobzol`
2024-11-27 21:19:54 +00:00
bors
6b6a867ae9 Auto merge of #133474 - RalfJung:gvn-miscompile, r=compiler-errors
Do not unify dereferences of shared borrows in GVN

Repost of https://github.com/rust-lang/rust/pull/132461, the last commit applies my suggestions.

Fixes https://github.com/rust-lang/rust/issues/130853
2024-11-27 15:43:56 +00:00
bors
c322cd5c5a Auto merge of #133393 - compiler-errors:dyn-tweaks, r=lcnr,spastorino
Some minor dyn-related tweaks

Each commit should be self-explanatory, but I'm happy to explain what's going on if not. These are tweaks I pulled out of #133388, but they can be reviewed sooner than that.

r? types
2024-11-27 13:02:46 +00:00
bjorn3
dc65c6317a
Fix review comment 2024-11-27 11:57:29 +01:00
bors
39cb3386dd Auto merge of #133369 - Zalathar:profiler-builtins-no-core, r=jieyouxu
Allow injecting a profiler runtime into `#![no_core]` crates

An alternative to #133300, allowing `-Cinstrument-coverage` to be used with `-Zbuild-std`.

The incompatibility between `profiler_builtins` and `#![no_core]` crates appears to have been caused by profiler_builtins depending on core, and therefore conflicting with core (or minicore).

But that's a false dependency, because the profiler doesn't contain any actual Rust code. So we can just mark the profiler itself as `#![no_core]`, and remove the incompatibility error.

---

For context, the error was originally added by #79958.
2024-11-27 10:19:38 +00:00
bors
5f8a2405a6 Auto merge of #133527 - matthiaskrgr:rollup-kyre1df, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #132979 (use `--exact` on `--skip` to avoid unintended substring matches)
 - #133248 (CI: split x86_64-msvc-ext job)
 - #133449 (std: expose `const_io_error!` as `const_error!`)
 - #133453 (Commit license-metadata.json to git and check it's correct in CI)
 - #133457 (miri: implement `TlsFree`)
 - #133493 (do not constrain infer vars in `find_best_leaf_obligation`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-27 07:38:21 +00:00
Matthias Krüger
762a661705
Rollup merge of #133493 - lcnr:fulfill-fudge, r=compiler-errors
do not constrain infer vars in `find_best_leaf_obligation`

This ended up causing an ICE by making the following code path reachable by incorrectly constraining an inference variable while computing the best obligation for a preceding ambiguity. Closes #129444.

f2abf827c1/compiler/rustc_trait_selection/src/solve/fulfill.rs (L312-L314)

I have to be honest, I don't fully understand how that change removes all the additional diagnostics :3

r? `@compiler-errors`
2024-11-27 08:13:49 +01:00
Matthias Krüger
3cce78b0d1
Rollup merge of #133457 - joboet:miri-tlsfree, r=saethlin
miri: implement `TlsFree`

If the variable does not need a destructor, `std` uses racy initialization for creating TLS keys on Windows. With just the right timing, this can lead to `TlsFree` being called. Unfortunately, with #132654 this is hit quite often, so miri should definitely support `TlsFree` ([documentation](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsfree)).

I'm filing this here instead of in the miri repo so that #132654 isn't blocked for so long.
2024-11-27 08:13:48 +01:00
Matthias Krüger
04d633366d
Rollup merge of #133453 - ferrocene:check-license-metadata, r=Kobzol
Commit license-metadata.json to git and check it's correct in CI

This PR adds `license-metadata.json` to the root of the git repo, and changes `mingw-check` to check that the file is still up-to-date.

By committing this file, we remove the need for developers to a) have reuse installed or b) run an expensive ~90 second analysis of the files on disk when they want generate the COPYRIGHT.html files which depend on this license metadata.

The file will need updating whenever `REUSE.toml` changes, or when git submodules are added, or when git submodules change their license information (as detected by REUSE).

You can now run:

* `./x run collect-license-metadata` to update the `./license-metadata.json` file
* `./x test collect-license-metadata` to test the `./license-metadata.json` file for correctness

The comparison is done with two `serde_json::Value` objects, so the map objects they contain should ignore differences in ordering.
2024-11-27 08:13:48 +01:00
Matthias Krüger
dcebc5eddd
Rollup merge of #133449 - joboet:io_const_error, r=tgross35
std: expose `const_io_error!` as `const_error!`

ACP: https://github.com/rust-lang/libs-team/issues/205
Tracking issue: https://github.com/rust-lang/rust/issues/133448

Probably best reviewed commit-by-commit, the first one does the API change, the second does the mass-rename.
2024-11-27 08:13:47 +01:00
Matthias Krüger
21f6ef577b
Rollup merge of #133248 - MarcoIeni:x86_64-msvc-ext-free, r=Kobzol
CI: split x86_64-msvc-ext job

try-job: x86_64-msvc-ext1
try-job: x86_64-msvc-ext3
2024-11-27 08:13:46 +01:00
Matthias Krüger
ee2d862212
Rollup merge of #132979 - onur-ozkan:skip-exact, r=jieyouxu,tgross35
use `--exact` on `--skip` to avoid unintended substring matches

Without the `--exact` flag, using `--skip tests/rustdoc` can unintentionally skip other tests that match as substrings such as `rustdoc-gui`, `rustdoc-js`, etc.

For debugging, run: `./x.py --stage 2 test rustdoc-ui --skip tests/rustdoc` and `./x.py --stage 2 test rustdoc-ui --skip tests/rustdoc -- --exact`

Resolves https://github.com/rust-lang/rust/issues/117721

try-job: x86_64-apple-1
2024-11-27 08:13:46 +01:00
Urgau
b6c80a610f Avoid even more decoding if not absolutely necessary 2024-11-27 07:35:55 +01:00
bors
83965efe6a Auto merge of #133274 - ehuss:macro_rules-edition-from-pm, r=compiler-errors
Use edition of `macro_rules` when compiling the macro

This changes the edition assigned to a macro_rules macro when it is compiled to use the edition of where the macro came from instead of the local crate's edition.

This fixes a problem when a macro_rules macro is created by a proc-macro. Previously that macro would be tagged with the local edition, which would cause problems with using the correct edition behavior inside the macro. For example, the check for unsafe attributes would cause errors in 2024 when using proc-macros from older editions.

This is partially related to https://github.com/rust-lang/rust/issues/132906. Unfortunately this is only a half fix for that issue. It fixes the error that happens in 2024, but does not fix the lint firing in 2021. I'm still trying to think of some way to fix that, but I'm running low on ideas.
2024-11-27 04:54:08 +00:00
Michael Goulet
4c0ea55f40 Bless tests due to extra error reporting due to normalizing types that are not WF
It's okay though b/c these are duplicated diagnostics.
2024-11-27 03:34:58 +00:00
Michael Goulet
48b2bbd0de Structurally resolve before matching on type of projection 2024-11-27 02:46:08 +00:00
Michael Goulet
72cd7ac4f1 Structurally resolve before checking never 2024-11-27 02:39:07 +00:00
bors
48696f5bd6 Auto merge of #133516 - compiler-errors:rollup-mq334h8, r=compiler-errors
Rollup of 8 pull requests

Successful merges:

 - #115293 (Remove -Zfuel.)
 - #132605 (CI: increase timeout from 4h to 6h)
 - #133304 (Revert diagnostics hack to fix ICE 132920)
 - #133402 (Constify `Drop` and `Destruct`)
 - #133458 (Fix `Result` and `Option` not getting a jump to def link generated)
 - #133471 (gce: fix typing_mode mismatch)
 - #133475 (`MaybeStorage` improvements)
 - #133513 (Only ignore windows-gnu in avr-jmp-offset)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-27 02:13:49 +00:00
Michael Goulet
702996c31b
Rollup merge of #133513 - ChrisDenton:windows-msvc, r=jieyouxu
Only ignore windows-gnu in avr-jmp-offset

The failure in 133480 occurs on mingw but there's currently no evidence it fails on msvc too.
2024-11-26 20:35:41 -05:00
Michael Goulet
219b2a010d
Rollup merge of #133475 - nnethercote:MaybeStorage-improvements, r=lcnr
`MaybeStorage` improvements

Minor dataflow improvements.

r? `@tmiasko`
2024-11-26 20:35:40 -05:00
Michael Goulet
82622c6876
Rollup merge of #133471 - lcnr:uwu-gamer, r=BoxyUwU
gce: fix typing_mode mismatch

Fixes #133271

r? `@BoxyUwU`
2024-11-26 20:35:39 -05:00
Michael Goulet
32dc3936a0
Rollup merge of #133458 - GuillaumeGomez:fix-prelude-tys-links, r=notriddle
Fix `Result` and `Option` not getting a jump to def link generated

It was just because we didn't store the "span" in the `PreludeTy` variant.

r? ``@notriddle``
2024-11-26 20:35:39 -05:00
Michael Goulet
8a2f57f0c4
Rollup merge of #133402 - compiler-errors:drop-and-destruct, r=lcnr
Constify `Drop` and `Destruct`

r? `@lcnr` or `@fee1-dead`
2024-11-26 20:35:38 -05:00
Michael Goulet
f101562980
Rollup merge of #133304 - lqd:issue-132920, r=estebank
Revert diagnostics hack to fix ICE 132920

This reverts 8a568d9f15 from #128849 to fix the diagnostics ICE in #132920.

The hack mentioned in that commit was supposed to be tailored to E277, but that codepath is used actually shared with other errors, e.g. at least the E283 from the linked issue.

We may have to eat the slightly worse diagnostics until a non-hacky way to make this error less verbose is implemented (or I guess a different hack specializing even more to E277's structure).

Sorry ``@estebank`` 🙏. I can close this if you'd prefer to fix it in a different way.

Since it seems unexpected that #128849 would impact the repro, here's how the error used to look before that PR.

```console
warning: unused import: `minirapier::Ray`
 --> src/main.rs:2:5
  |
2 | use minirapier::Ray;
  |     ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0283]: type annotations needed
  --> src/main.rs:10:5
   |
10 |     insert_resource(Res.into());
   |     ^^^^^^^^^^^^^^^ ---------- type must be known at this point
   |     |
   |     cannot infer type of the type parameter `R` declared on the function `insert_resource`
   |
   = note: cannot satisfy `_: Resource`
   = help: the trait `Resource` is implemented for `Res`
note: required by a bound in `insert_resource`
  --> src/main.rs:4:23
   |
4  | fn insert_resource<R: Resource>(_resource: R) {}
   |                       ^^^^^^^^ required by this bound in `insert_resource`
help: consider specifying the generic argument
   |
10 |     insert_resource::<R>(Res.into());
   |                    +++++
help: consider removing this method call, as the receiver has type `Res` and `Res: Resource` trivially holds
   |
10 -     insert_resource(Res.into());
10 +     insert_resource(Res);
```

And how it looks now without the ICE.

```console
warning: unused import: `minirapier::Ray`
 --> src/main.rs:2:5
  |
2 | use minirapier::Ray;
  |     ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0283]: type annotations needed
  --> src/main.rs:10:5
   |
10 |     insert_resource(Res.into());
   |     ^^^^^^^^^^^^^^^ ---------- type must be known at this point
   |     |
   |     cannot infer type of the type parameter `R` declared on the function `insert_resource`
   |
   = note: cannot satisfy `_: Resource`
note: there are multiple different versions of crate `minibevy` in the dependency graph
  --> /home/lqd/rust/tmp/minimization/issue-132920/rustc-ice-version-conflict/minibevy_b/src/lib.rs:1:1
   |
1  | pub trait Resource {}
   | ^^^^^^^^^^^^^^^^^^ this is the required trait
   |
  ::: src/main.rs:1:5
   |
1  | use minibevy::Resource;
   |     -------- one version of crate `minibevy` is used here, as a direct dependency of the current crate
2  | use minirapier::Ray;
   |     ---------- one version of crate `minibevy` is used here, as a dependency of crate `minirapier`
   |
  ::: /home/lqd/rust/tmp/minimization/issue-132920/rustc-ice-version-conflict/minibevy_a/src/lib.rs:1:1
   |
1  | pub trait Resource {}
   | ------------------ this is the found trait
   = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `insert_resource`
  --> src/main.rs:4:23
   |
4  | fn insert_resource<R: Resource>(_resource: R) {}
   |                       ^^^^^^^^ required by this bound in `insert_resource`
help: consider specifying the generic argument
   |
10 |     insert_resource::<R>(Res.into());
   |                    +++++
help: consider removing this method call, as the receiver has type `Res` and `Res: Resource` trivially holds
   |
10 -     insert_resource(Res.into());
10 +     insert_resource(Res);
   |
```

The improvements from #128849 are still present and the note about the trait coming from the 2 versions of bevy is more explanatory/helpful than before, albeit a bit verbosely.

Fixes #132920.
2024-11-26 20:35:38 -05:00
Michael Goulet
24e7196f92
Rollup merge of #132605 - Kobzol:ci-increase-timeout, r=Mark-Simulacrum
CI: increase timeout from 4h to 6h

Our CI got a bit slower since the last time we [lowered](https://github.com/rust-lang/rust/pull/127648) the timeout, and if e.g. Docker build cache is broken, the timeout can be triggered.

Discussed [here](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/ci.20job.20timings.20stats).
2024-11-26 20:35:37 -05:00
Michael Goulet
145df3bd70
Rollup merge of #115293 - cjgillot:no-fuel, r=wesleywiser,DianQK
Remove -Zfuel.

I'm not sure this feature is used. I only found 2 references in a google search, both referring to its introduction.

Meanwhile, it's a global mutable state, untracked by incremental compilation, so incompatible with it.
2024-11-26 20:35:36 -05:00
bors
dd2837ec5d Auto merge of #133505 - compiler-errors:rollup-xjp8hdi, r=compiler-errors
Rollup of 12 pull requests

Successful merges:

 - #133042 (btree: add `{Entry,VacantEntry}::insert_entry`)
 - #133070 (Lexer tweaks)
 - #133136 (Support ranges in `<[T]>::get_many_mut()`)
 - #133140 (Inline ExprPrecedence::order into Expr::precedence)
 - #133155 (Yet more `rustc_mir_dataflow` cleanups)
 - #133282 (Shorten the `MaybeUninit` `Debug` implementation)
 - #133326 (Remove the `DefinitelyInitializedPlaces` analysis.)
 - #133362 (No need to re-sort existential preds in relate impl)
 - #133367 (Simplify array length mismatch error reporting (to not try to turn consts into target usizes))
 - #133394 (Bail on more errors in dyn ty lowering)
 - #133410 (target check_consistency: ensure target feature string makes some basic sense)
 - #133435 (miri: disable test_downgrade_observe test on macOS)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-26 21:57:32 +00:00
Chris Denton
787b795d14
Only ignore windows-gnu in avr-jmp-offset 2024-11-26 21:08:33 +00:00
Urgau
9b040e92aa Avoid decoding from metadata if not necessary 2024-11-26 21:25:27 +01:00
onur-ozkan
8d404a4af5 don't pass every test arg to test-float-parse
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-26 22:13:56 +03:00
Ralf Jung
987d642de5
Merge pull request #4031 from devnexen/solarish_stat
filesystem support for solarish: stat
2024-11-26 18:30:08 +00:00
joboet
c14d137bfc
std: update internal uses of io::const_error! 2024-11-26 18:38:24 +01:00
Michael Goulet
c4e2b0c605
Rollup merge of #133435 - RalfJung:test_downgrade_observe, r=tgross35
miri: disable test_downgrade_observe test on macOS

Due to https://github.com/rust-lang/rust/issues/121950, this test can fail on Miri. The test is also quite slow on Miri (taking more than 30s) due to the high iteration count (a total of 2000), so let's reduce that a little.

Fixes https://github.com/rust-lang/rust/issues/133421
2024-11-26 12:03:45 -05:00