Commit Graph

264910 Commits

Author SHA1 Message Date
Guillaume Gomez
59a9e0986d Correctly handle the case where there is no doctests to run 2024-08-13 20:14:54 +02:00
Guillaume Gomez
a0ae8ac861 If there is any AST error with a doctest, we make it a standalone test
To do so, AST error detection was improved in order to not filter out
too many doctests.
2024-08-13 20:14:54 +02:00
Guillaume Gomez
b7079c5c83 Prevent merged doctests to break stdin if the generated file is too big 2024-08-13 20:14:53 +02:00
Guillaume Gomez
23badff4fe Add documentation for the doctest standalone attribute 2024-08-13 20:14:53 +02:00
Guillaume Gomez
3147520d34 Add new doc codeblock standalone attribute 2024-08-13 20:14:53 +02:00
Guillaume Gomez
58cd70e062 Only merge doctests starting 2024 edition 2024-08-13 20:14:53 +02:00
Guillaume Gomez
6ae3524835 Split doctests into two categories: mergeable ones and standalone ones 2024-08-13 20:14:53 +02:00
Guillaume Gomez
96051f20e2 Split standalone and mergeable doctests 2024-08-13 20:14:53 +02:00
Guillaume Gomez
39f029a852 Split doctests between standalone and mergeable ones 2024-08-13 20:14:53 +02:00
Guillaume Gomez
7d72482431 Simplify doctest tests 2024-08-13 20:14:53 +02:00
Guillaume Gomez
5e244370fe Add DocTest type 2024-08-13 20:14:53 +02:00
Guillaume Gomez
05fbfde17d Clean up rustdoc make_test function code 2024-08-13 20:14:52 +02:00
bors
6ff09af0cd Auto merge of #3802 - RalfJung:no-more-call-id, r=RalfJung
Borrow tracking: remove the concept of a call ID

Turns out this is not needed any more ever since we started tracking the `protected_tags` list in the per-frame state.

Also thanks to `@JoJoDeveloping` for inspiring me to even consider this possibility. :)
2024-08-13 17:48:58 +00:00
Ralf Jung
7db942b320 remove the concept of a Call ID 2024-08-13 19:47:28 +02:00
Michael Howell
c6fb0f344e diagnostics: use DeepRejectCtxt for check
This makes more things match, particularly applicable blankets.
2024-08-13 10:01:13 -07:00
Colin Finck
71d98a8620 Ship MinGW-w64 runtime DLLs along with rust-lld.exe for -pc-windows-gnu targets
`rust-lld.exe` built for `x86_64-pc-windows-gnu` depends on `libgcc_s_seh-1.dll` and `libwinpthread-1.dll` from MinGW-w64.
Until now, they were not shipped alongside `rust-lld.exe`, and you could not run `rust-lld.exe` on most systems.

This problem didn't surface until now because:
* Most targets don't use `rust-lld` by default.
* Some people had these DLLs in their `PATH` from some other MinGW binary.
* `rustup` used to add `bin` to the `PATH`, which contains these DLLs for `rustc.exe`. But it no longer does that: ce3c09a0cb

Fixes #125809
2024-08-13 18:15:29 +02:00
Jakub Beránek
87a4c325d2 Fix target triple in bootstrap 2024-08-13 18:08:30 +02:00
lcnr
0aa17a4c4d implement a performant and fuzzed solver cache 2024-08-13 17:33:48 +02:00
bors
f96e296927 Auto merge of #17880 - lnicola:sync-from-rust, r=lnicola
minor: sync from downstream
2024-08-13 15:01:50 +00:00
Laurențiu Nicola
28af7e0958 Merge from rust-lang/rust 2024-08-13 17:58:52 +03:00
Laurențiu Nicola
ddb8551e03 Preparing for merge from rust-lang/rust 2024-08-13 17:56:37 +03:00
onur-ozkan
0518e8c7fd detect incompatible CI rustc options more precisely
Previously, the logic here was simply checking whether the option was set in `config.toml`.
This approach was not manageable in our CI runners as we set so many options in config.toml.
In reality, those values are not incompatible since they are usually the same value used to generate
the CI rustc. Now, the new logic compares the configuration values with the values used to generate
the CI rustc, so we get more precise results and make the process more manageable.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 17:22:13 +03:00
onur-ozkan
b2f1fc1697 separate inner function (get_toml) of Config::parse
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 17:20:39 +03:00
bors
00423bb1d8 Auto merge of #17853 - ShoyuVanilla:min-exhaustive-pat, r=ShoyuVanilla
feat: `min-exhaustive-patterns`

Resolves #17851
2024-08-13 14:18:14 +00:00
Shoyu Vanilla
4ea0db907c Bump rustc_pattern_analysis 2024-08-13 23:15:37 +09:00
Shoyu Vanilla
6911d9f066 Temporarily remove non-working test case 2024-08-13 23:10:55 +09:00
Shoyu Vanilla
20971602d5 feat: `min-exhaustive-patterns 2024-08-13 23:10:55 +09:00
Guillaume Gomez
afbab80681 Update rustdoc-ui test for --generate-link-to-definition option 2024-08-13 15:08:07 +02:00
Guillaume Gomez
d2177d90b0 Emit a warning instead of an error if --generate-link-to-definition is used with other output formats than HTML 2024-08-13 15:07:26 +02:00
Guillaume Gomez
53e87d211c Remove duplicated rustdoc ui test 2024-08-13 15:03:18 +02:00
bors
84e98eb9da Auto merge of #13265 - antonilol:lint-source-location, r=Alexendoo
Fix lint source location github link (missing a letter 'L')

Links to github ('View Source') were broken by [pull request 13221](https://github.com/rust-lang/rust-clippy/pull/13221/files#diff-dcd0f8da3873f35e9777182474a9d0f287f478c0c02650a1d3fefffe1c8c1d30R159).

also fixed some indentation in docs

changelog: none
2024-08-13 12:01:12 +00:00
Ralf Jung
10cb5aa934 borrow_tracker: update comments regarding protectors 2024-08-13 13:51:08 +02:00
bors
80eb5a8e91 Auto merge of #129046 - matthiaskrgr:rollup-9x4xgak, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #128643 (Refactor `powerpc64` call ABI handling)
 - #128655 (std: refactor UNIX random data generation)
 - #128745 (Remove unused lifetime parameter from spawn_unchecked)
 - #128841 (bootstrap: don't use rustflags for `--rustc-args`)
 - #128983 (Slightly refactor `TargetSelection` in bootstrap)
 - #129026 (CFI: Move CFI ui tests to cfi directory)
 - #129040 (Fix blessing of rmake tests)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-08-13 11:43:20 +00:00
Antoni Spaanderman
819fa6f180 fix source location github link 2024-08-13 13:13:31 +02:00
Antoni Spaanderman
5fee840875 fix indentation in docs 2024-08-13 13:13:02 +02:00
onur-ozkan
aba675fe75 copy builder-config file into ci-rustc sysroot
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 13:48:23 +03:00
Zalathar
355f264d32 Remove a confusing comment
The JSON messages parsed by this file are from the _compiler_, not from
libtest.
2024-08-13 20:24:53 +10:00
Zalathar
2a000c8d70 Don't panic on unknown JSON-like output lines
This function is called for both compiler and non-compiler output, so if the
line isn't recognized as JSON from the compiler then just print it as-is.
2024-08-13 20:23:48 +10:00
Matthias Krüger
42f70c240a Rollup merge of #129040 - Zalathar:bless-rmake, r=jieyouxu
Fix blessing of rmake tests

Fixes #129038.

When running in `--bless` mode, we now set the value of `RUSTC_BLESS_TEST` to the current test's source directory. This allows the diff helper in `run_make_support` to find the original snapshot file in the source directory and bless that, instead of unhelpfully blessing the temporary copy in `build`.

r? `@jieyouxu`
2024-08-13 12:12:25 +02:00
Matthias Krüger
41aa9631ef Rollup merge of #129026 - rcvalle:rust-cfi-move-cfi-ui-tests-to-cfi-directory, r=compiler-errors
CFI: Move CFI ui tests to cfi directory

Move the CFI ui tests to the cfi directory and removes the cfi prefix from tests file names similarly to how the cfi codegen tests are organized.
2024-08-13 12:12:25 +02:00
Matthias Krüger
9d9c9acc6e Rollup merge of #128983 - Kobzol:bootstrap-target, r=onur-ozkan
Slightly refactor `TargetSelection` in bootstrap

Mostly a drive-by refactoring of `TargetSelection` to reduce some manual "windows-gnu" detection and also accesses to the `triple` field.

r? `@onur-ozkan`
2024-08-13 12:12:24 +02:00
Matthias Krüger
0643c3b910 Rollup merge of #128841 - lqd:rustc-args, r=onur-ozkan
bootstrap: don't use rustflags for `--rustc-args`

r? `@onur-ozkan`

This is going to require a bit of context.

https://github.com/rust-lang/rust/pull/47558 has added `--rustc-args` to `./x test` to allow passing flags when building `compiletest` tests. It was made specifically because using `RUSTFLAGS` would rebuild the compiler/stdlib, which would in turn require the flag you want to build tests with to successfully bootstrap.

#113178 made the request that it also works for other tests and doctests. This is not trivial to support across the board for `library`/`compiler` unit-tests/doctests and across stages. This issue was closed in #113948 by using `RUSTFLAGS`, seemingly incorrectly since https://github.com/rust-lang/rust/pull/123489 fixed that part to make it work.

Unfortunately #123489/#113948 have regressed the goals of `--rustc-args`:
- now we can't use rustc args that don't bootstrap, to run the UI tests: we can't test incomplete features. The new trait solver doesn't bootstrap, in-progress borrowck/polonius changes don't bootstrap, some other features are similarly incomplete, etc.
- using the flag now rebuilds everything from scratch: stage0 stdlib, stage1 compiler, stage1 stdlib. You don't need to re-do all this to compile UI tests, you only need the latter to run stdlib tests with a new flag, etc. This happens for contributors, but also on CI today. (Not to mention that in doing that it will rebuild things with flags that are not meant to be used, e.g. stdlib cfgs that don't exist in the compiler; or you could also imagine that this silently enables flags that were not meant to be enabled in this way).

Since then, bd71c71ea0 has started using it to test a stdlib feature, relying on the fact that it now rebuilds everything. So #125011 also regressed CI times more than necessary because it rebuilds everything instead of just stage 1 stdlib.

It's not easy for me to know how to properly fix #113178 in bootstrap, but #113948/#123489 are not it since they regress the initial intent. I'd think bootstrap would have to know from the list of test targets that are passed that the `library` or `compiler` paths that are passed could require rebuilding these crates with different rustflags, probably also depending on stages. Therefore I would not be able to fix it, and will just try in this PR to unregress the situation to unblock the initial use-case.

It seems miri now also uses `./x miri --rustc-args` in this incorrect meaning to rebuild the `library` paths they support to run with the new args. I've not made any bootstrap changes related to `./x miri` in this PR, so `--rustc-args` wouldn't work there anymore. I'd assume this would need to use rustflags again but I don't know how to make that work properly in bootstrap, hence opening as draft, so you can tell me how to do that. I assume we don't want to break their use-case again now that it exists, even though there are ways to use `./x test` to do exactly that.

`RUSTFLAGS_NOT_BOOTSTRAP=flag ./x test library/std` is a way to run unit tests with a new flag without rebuilding everything, while with #123489 there is no way anymore to run tests with a flag that doesn't bootstrap.

---
edit: after review, this PR:
- renames `./x test --rustc-args` to `./x test --compiletest-rustc-args` as it only applies there, and cannot use rustflags for this purpose.
- fixes the regression that using these args rebuilt everything from scratch
- speeds up some CI jobs via the above point
- removes `./x miri --rustc-args` as only library tests are supported, needs to rebuild libstd, and `./x miri --compiletest-rustc-args` wouldn't work since compiletests are not supported.
2024-08-13 12:12:23 +02:00
Matthias Krüger
37b956787a Rollup merge of #128745 - dtolnay:spawnunchecked, r=workingjubilee
Remove unused lifetime parameter from spawn_unchecked

Amanieu caught this when reviewing the stabilization proposal in https://github.com/rust-lang/rust/issues/55132.

The `'a` lifetime here is useless. The signature is asking the caller of `spawn_unchecked` to "give me any lifetime that is shorter than your F's and T's lifetime", which they can always to with no effect, because arbitrarily short lifetimes exist.
2024-08-13 12:12:23 +02:00
Matthias Krüger
c977deb24b Rollup merge of #128655 - joboet:play_with_the_dice, r=ChrisDenton
std: refactor UNIX random data generation

This PR makes a number of changes to the UNIX randomness implementation:
* Use `io::Error` for centralized error handling
* Move the file-fallback logic out of the `getrandom`-specific module
* Stop redefining the syscalls on macOS and DragonFly, they have appeared in `libc`
* Add a `OnceLock` to cache the random device file descriptor
2024-08-13 12:12:22 +02:00
Matthias Krüger
00d040e50a Rollup merge of #128643 - beetrees:ppc64-abi-fix, r=bjorn3
Refactor `powerpc64` call ABI handling

As the [specification](https://openpowerfoundation.org/specifications/64bitelfabi/) for the ELFv2 ABI states that returned aggregates are returned like arguments as long as they are at most two doublewords, I've merged the `classify_arg` and `classify_ret` functions to reduce code duplication. The only functional change is to fix #128579: the `classify_ret` function was incorrectly handling aggregates where `bits > 64 && bits < 128`. I've used the aggregate handling implementation from `classify_arg` which doesn't have this issue.

`@awilfox` could you test this on `powerpc64-unknown-linux-musl`? I'm only able to cross-test on `powerpc64-unknown-linux-gnu` and `powerpc64le-unknown-linux-gnu` locally at the moment, and as a tier 3 target `powerpc64-unknown-linux-musl` has zero CI coverage.

Fixes: #128579
2024-08-13 12:12:21 +02:00
bors
61a252f182 Auto merge of #13221 - Alexendoo:farewell-metadata-collector, r=xFrednet
Replace the metadata collector with tests

The metadata collector handles 3 files: [`CHANGELOG.md`](c082bc2cb8/CHANGELOG.md (L6050)), [`lint_configuration.md`](c082bc2cb8/book/src/lint_configuration.md) and `util/gh-pages/lints.json`

- `CHANGELOG.md` and `lint_configuration.md` are now checked by `tests/config-metadata.rs`, when they are outdated `cargo test` will fail with a message to run `cargo bless --test config-metadata` in order to update them

   A plain `cargo bless` will run all the tests, blessing both this and the UI tests

- `util/gh-pages/lints.json` is now generated when running `cargo uitest` with `COLLECT_METADATA=1` (still aliased to `cargo collect-metadata`)

   It uses a `ui_test` [post test action](https://docs.rs/ui_test/latest/ui_test/custom_flags/trait.Flag.html#method.post_test_action) to retrieve the applicability from the actual diagnostics emitted during UI tests

   Example change from the current to new JSON:

   ```diff
      {
        "id": "chars_next_cmp",
   -    "id_span": {
   -      "path": "src/methods/mod.rs",
   -      "line": 891
   -    },
   +    "id_location": "clippy_lints/src/methods/mod.rs#891",
        "group": "style",
        "level": "warn",
   -    "docs": "\n### What it does ... ```",
   +    "docs": "### What it does ... ```\n",
        "version": "pre 1.29.0",
   -    "applicability": {
   -      "is_multi_part_suggestion": false,
   -      "applicability": "Unresolved"
   -    }
   +    "applicability": "MachineApplicable"
      },
   ```

   `Hide whitespace` makes the `compile-test.rs` changes much easier to see

r? `@flip1995`

changelog: none
2024-08-13 09:36:58 +00:00
Tobias Bucher
811d7dd113 #[deprecated_safe_2024]: Also use the // TODO: hint in the compiler error
This doesn't work for translated compiler error messages.
2024-08-13 11:32:47 +02:00
Tobias Bucher
399ef23d2b Allow to customize // TODO: comment for deprecated safe autofix
Relevant for the deprecation of `CommandExt::before_exit` in #125970.
2024-08-13 11:32:24 +02:00
bors
a2e1d154d5 Auto merge of #128962 - devnexen:fs_get_mode_haiku, r=workingjubilee
std::fs: get_mode implementation for all unix
2024-08-13 09:10:32 +00:00
Jakub Beránek
1c0c2c3ad6 Implement AsRef<Path> for TargetSelection 2024-08-13 10:40:45 +02:00