Commit graph

16347 commits

Author SHA1 Message Date
Guillaume Gomez
65b0dad824
Rollup merge of #133701 - kornelski:c-str, r=workingjubilee
Use c"lit" for CStrings without unwrap

I've reviewed uses of `CString::new("lit")`.

Some could be changed to `c"lit"`. Some could be changed to `c"lit".to_owned()`, avoiding an `unwrap()`.

Many `CString` documentation examples could be simplified. I deliberately haven't changed all the examples to use the exact same expression, so that they can demonstrate many ways of creating `CString`s.

I've left UI tests mostly unchanged, because `c""` requires edition 2021, but most UI tests use 2015, and I didn't want to accidentally change what the tests are testing.
2024-12-02 23:08:55 +01:00
Kornel
eadea7764e
Use c"lit" for CStrings without unwrap 2024-12-02 18:16:36 +00:00
Urgau
8ce63576bd Allow fn pointers comparisons lint in UI tests 2024-12-02 18:43:37 +01:00
Urgau
5e34c2e43c Drop uplifted clippy::fn_address_comparisons 2024-12-02 18:43:37 +01:00
Michael Goulet
59e3e8934e Gate async fn trait bound modifier on async_trait_bounds 2024-12-02 16:50:44 +00:00
Guillaume Gomez
4c68112df1
Rollup merge of #133751 - lcnr:no-trait-solving-on-type, r=compiler-errors
remove `Ty::is_copy_modulo_regions`

Using these functions is likely incorrect if an `InferCtxt` is available, I moved this function to `TyCtxt` (and added it to `LateContext`) and added a note to the documentation that one should prefer `Infer::type_is_copy_modulo_regions` instead.

I didn't yet move `is_sized` and `is_freeze`, though I think we should move these as well.

r? `@compiler-errors` cc #132279
2024-12-02 17:36:11 +01:00
Guillaume Gomez
80e0448947
Rollup merge of #133736 - jieyouxu:needs-target-has-atomic, r=compiler-errors
Add `needs-target-has-atomic` directive

Before this PR, the test writer has to specify platforms and architectures by hand for targets that have differing atomic width support. `#[cfg(target_has_atomic="...")]` is not quite the same because (1) you may have to specify additional matchers manually which has to be maintained individually, and (2) the `#[cfg]` blocks does not communicate to compiletest that a test would be ignored for a given target.

This PR implements a `//@ needs-target-has-atomic` directive which admits a comma-separated list of required atomic widths that the target must satisfy in order for the test to run.

```
//@ needs-target-has-atomic: 8, 16, ptr
```

See <https://github.com/rust-lang/rust/issues/87377>.

This PR supersedes #133095 and is co-authored by `@kei519,` because it was somewhat subtle, and it turned out easier to implement than to review.

rustc-dev-guide docs PR: https://github.com/rust-lang/rustc-dev-guide/pull/2154
2024-12-02 17:36:07 +01:00
Guillaume Gomez
15fda1e90b
Rollup merge of #133725 - jyn514:remove-compare-output-subset, r=jieyouxu
Remove `//@ compare-output-lines-by-subset`

There was only ever one test which used this flag, and it was removed in https://github.com/rust-lang/rust/pull/132244. I think this is a bad flag that should never have been added; comparing by subset makes the test failures extremely hard to debug. Any test that needs complicated output filtering like this should just use run-make instead.

Note that this does not remove the underlying comparison code, because it's still used if `runner` is set. I don't quite understand what's going on there, but since we still test on other platforms and in CI that the full output is accurate, I think it will be easier to debug than a test that uses compare-by-subset unconditionally.

rustc-dev-guide update PR: https://github.com/rust-lang/rustc-dev-guide/pull/2151
2024-12-02 17:36:05 +01:00
Guillaume Gomez
7dd0c8314d
Rollup merge of #133603 - dtolnay:precedence, r=lcnr
Eliminate magic numbers from expression precedence

Context: see https://github.com/rust-lang/rust/pull/133140.

This PR continues on backporting Syn's expression precedence design into rustc. Rustc's design used mysterious integer quantities represented variously as `i8` or `usize` (e.g. `PREC_CLOSURE = -40i8`), a special significance around `0` that is never named, and an extra `PREC_FORCE_PAREN` precedence level that does not correspond to any expression. Syn's design uses a C-like enum with variants that clearly correspond to specific sets of expression kinds.

This PR is a refactoring that has no intended behavior change on its own, but it unblocks other precedence work that rustc's precedence design was poorly suited to accommodate.

- Asymmetrical precedence, so that a pretty-printer can tell `(return 1) + 1` needs parens but `1 + return 1` does not.

- Squashing the `Closure` and `Jump` cases into a single precedence level.

- Numerous remaining false positives and false negatives in rustc pretty-printer's parenthesization of macro metavariables, for example in `$e < rhs` where $e is `lhs as Thing<T>`.

FYI `@fmease` &mdash; you don't need to review if rustbot picks someone else, but you mentioned being interested in the followup PRs.
2024-12-02 17:36:03 +01:00
Lukas Wirth
86387c8feb
Merge pull request #18561 from markmurphydev/macro_name_raw_variable
Add macro expansion test for raw variable names
2024-12-02 16:23:07 +00:00
lcnr
e089bead32 remove Ty::is_copy_modulo_regions 2024-12-02 13:57:56 +01:00
Lukas Wirth
54a1a96b57
Merge pull request #18587 from Veykril/push-urrlrursyrws
fix: Fix syntax fixup inserting unnecessary semicolons
2024-12-02 12:50:28 +00:00
Lukas Wirth
03ae70dcac fix: Fix syntax fixup inserting unnecessary semicolons 2024-12-02 13:35:58 +01:00
Lukas Wirth
5a52142eea Fix debug configuration querying not inheriting environment 2024-12-02 13:02:31 +01:00
Oli Scherer
778321d155 Change AttrArgs::Eq into a struct variant 2024-12-02 10:28:58 +00:00
许杰友 Jieyou Xu (Joe)
99c232223f Add needs-target-has-atomic directive
Before this commit, the test writer has to specify platforms and
architectures by hand for targets that have differing atomic width
support. `#[cfg(target_has_atomic)]` is not quite the same because (1)
you may have to specify additional matchers manually which has to be
maintained individually, and (2) the `#[cfg]` blocks does not
communicate to compiletest that a test would be ignored for a given
target.

This commit implements a `//@ needs-target-has-atomic` directive which
admits a comma-separated list of required atomic widths that the target
must satisfy in order for the test to run.

```
//@ needs-target-has-atomic: 8, 16, ptr
```

See <https://github.com/rust-lang/rust/issues/87377>.

Co-authored-by: kei519 <masaki.keigo.q00@kyoto-u.jp>
2024-12-02 14:51:03 +08:00
Jacob Pratt
811eaebf7e
Rollup merge of #133589 - voidc:remove-array-len, r=boxyuwu
Remove `hir::ArrayLen`

This refactoring removes `hir::ArrayLen`, replacing it with `hir::ConstArg`. To represent inferred array lengths (previously `hir::ArrayLen::Infer`), a new variant `ConstArgKind::Infer` is added.

r? `@BoxyUwU`
2024-12-01 22:10:23 -05:00
jyn
2f17ea0ff5 Remove //@ compare-output-lines-by-subset
There was only ever one test which used this flag, and it was removed in https://github.com/rust-lang/rust/pull/132244. I think this is a bad flag that should never have been added; comparing by subset makes the test failures extremely hard to debug. Any test that needs complicated output filtering like this should just use run-make instead.

Note that this does not remove the underlying comparison code, because it's still used if `runner` is set. I don't quite understand what's going on there, but since we still test on other platforms and in CI that the full output is accurate, I think it will be easier to debug than a test that uses compare-by-subset unconditionally.
2024-12-01 21:47:20 -05: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
Urgau
1c4657d3cd compiletest: un-escape new-line in normalize replacement string 2024-12-01 20:51:53 +01:00
clubby789
868668e05d Run cargo update and update licenses 2024-12-01 11:06:44 +00:00
Rune Tynan
374397f1bb Move FdTable to public location, fix up imports 2024-11-30 20:47:05 -08:00
David Tolnay
7ced18f329
Eliminate magic numbers from expression precedence 2024-11-30 17:53:40 -08:00
Dominik Stolz
d38f01312c Remove hir::ArrayLen, introduce ConstArgKind::Infer
Remove Node::ArrayLenInfer
2024-11-30 21:00:31 +01:00
Ralf Jung
ce95a44db6 improve TagEncoding::Niche docs and sanity check 2024-11-30 18:26:30 +01:00
bors
e93e096cc8 Auto merge of #133658 - jieyouxu:rollup-rq7e0gk, r=jieyouxu
Rollup of 10 pull requests

Successful merges:

 - #116161 (Stabilize `extended_varargs_abi_support`)
 - #132750 ([AIX] handle libunwind native_libs)
 - #133488 (tests: Add regression test for self referential structs with cow as last field)
 - #133569 (Bump `ruzstd` to 0.7.3)
 - #133585 (Do not call `extern_crate` on current trait on crate mismatch errors)
 - #133587 (Fix target_feature handling in freg of LoongArch inline assembly)
 - #133599 (Add `+forced-atomics` feature to esp32s2 no_std  target)
 - #133620 (Simplify hir_typeck_pass_to_variadic_function)
 - #133623 (Improve span handling in `parse_expr_bottom`.)
 - #133625 (custom MIR: add doc comment for debuginfo)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-30 14:34:27 +00:00
Nikita Popov
f5691baba6 Revert "Auto merge of #133654 - weihanglo:update-cargo, r=weihanglo"
This reverts commit 76f3ff6059, reversing
changes made to 1fc691e6dd.

The new pgo_works test fails when rust is built without profiling
support, including in CI on x86_64-gnu-aux.
2024-11-30 10:34:49 +01:00
许杰友 Jieyou Xu (Joe)
70e71f570d
Rollup merge of #133585 - estebank:issue-133563, r=jieyouxu
Do not call `extern_crate` on current trait on crate mismatch errors

When we encounter an error caused by traits/types of different versions of the same crate, filter out the current crate when collecting spans to add to the context so we don't call `extern_crate` on the `DefId` of the current crate, which is meaningless and ICEs.

Produced output with this filter:

```
error[E0277]: the trait bound `foo::Struct: Trait` is not satisfied
  --> y.rs:13:19
   |
13 |     check_trait::<foo::Struct>();
   |                   ^^^^^^^^^^^ the trait `Trait` is not implemented for `foo::Struct`
   |
note: there are multiple different versions of crate `foo` in the dependency graph
  --> y.rs:7:1
   |
4  | extern crate foo;
   | ----------------- one version of crate `foo` is used here, as a direct dependency of the current crate
5  |
6  | pub struct Struct;
   | ----------------- this type implements the required trait
7  | pub trait Trait {}
   | ^^^^^^^^^^^^^^^ this is the required trait
   |
  ::: x.rs:4:1
   |
4  | pub struct Struct;
   | ----------------- this type doesn't implement the required trait
5  | pub trait Trait {}
   | --------------- this is the found trait
   = note: two types coming from two different versions of the same crate are different types even if they look the same
   = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `check_trait`
  --> y.rs:10:19
   |
10 | fn check_trait<T: Trait>() {}
   |                   ^^^^^ required by this bound in `check_trait`
```

Fix #133563.
2024-11-30 12:56:52 +08:00
Michael Goulet
fb662a2e5c Remove redundant associated type bounds from dyn 2024-11-30 03:33:33 +00:00
bors
76f3ff6059 Auto merge of #133654 - weihanglo:update-cargo, r=weihanglo
Update cargo

8 commits in 4c39aaff66862cc0da52fe529aa1990bb8bb9a22..3908f64086a3d7b9af8d87b4da2bd100776c3e61
2024-11-25 16:36:17 +0000 to 2024-11-29 17:32:44 +0000
- chore(deps): update msrv (rust-lang/cargo#14867)
- fix(fix): Migrate cargo script manifests across editions (rust-lang/cargo#14864)
- feat(toml): Allow adding/removing from cargo scripts (rust-lang/cargo#14857)
- Add future-incompat warning against keywords in cfgs and add raw-idents (rust-lang/cargo#14671)
- test(build-std): download deps first (rust-lang/cargo#14861)
- test(pgo): ensure PGO works (rust-lang/cargo#14859)
- git-fetch-with-cli: Set `GIT_DIR` for bare repository compatibility (rust-lang/cargo#14860)
- fix(build-std): always link to std when testing proc-macros (rust-lang/cargo#14850)
2024-11-30 01:22:00 +00:00
Weihang Lo
2ba7d68011
Update cargo 2024-11-29 18:41:03 -05:00
bors
1fc691e6dd Auto merge of #133533 - BoxyUwU:bump-boostrap, r=jieyouxu,Mark-Simulacrum
Bump boostrap compiler to new beta

Currently failing due to something about the const stability checks and `panic!`. I'm not sure why though since I wasn't able to see any PRs merged in the past few days that would result in a `cfg(bootstrap)` that shouldn't be removed. cc `@RalfJung` #131349
2024-11-29 22:39:10 +00:00
bors
d10a6823f4 Auto merge of #133588 - flip1995:clippy-subtree-update, r=Manishearth
Clippy subtree update

r? `@Manishearth`
2024-11-29 19:52:08 +00:00
Esteban Küber
998ff2f0cd Move the crate-loading test to use diff output 2024-11-29 18:59:24 +00:00
Matthias Krüger
eabe6db9b1
Rollup merge of #133592 - WaffleLapkin:misc-meowing, r=jieyouxu
Misc: better instructions for envrc, ignore `/build` instead of `build/`

See commits for more information.

r? ``@jieyouxu``
2024-11-29 16:02:24 +01:00
bors
5bbbc0938c Auto merge of #133431 - nnethercote:rm-HybridBitSet, r=Mark-Simulacrum
Remove `HybridBitSet`

`HybridBitSet` was introduced under the name `HybridIdxSetBuf` way back in #53383 where it was a big win for NLL borrow checker performance. In #93984 the more flexible `ChunkedBitSet` was added. Uses of `HybridBitSet` have gradually disappeared (e.g. #116152) and there are now few enough that they can be replaced with `BitSet` or `ChunkedBitSet`, and `HybridBitSet` can be removed, cutting more than 700 lines of code.

r? `@Mark-Simulacrum`
2024-11-29 09:03:50 +00:00
Nicholas Nethercote
688f28d670 Stop using HybridBitSet in clippy.
The compiler uses `BitSet<Local>`, because the number of locals doesn't
get that high, so clippy should do likewise.
2024-11-29 17:23:34 +11:00
Maybe Lapkin
c52d952a6a
add instructions for generating flake.lock to envrc-flake
Previous setup instructions did not work without. (i.e. the envrc would
not do anything, `nix flake show..` would provide unhelpful error)
2024-11-28 21:52:18 +01:00
bors
a2545fd6fc Auto merge of #133540 - ehuss:compiletest-proc-macro, r=jieyouxu
Compiletest: add proc-macro header

This adds a `proc-macro` header to simplify using proc-macros, and to reduce boilerplate. This header works similar to the `aux-build` header where you pass a path for a proc-macro to be built.

This allows the `force-host`, `no-prefer-dynamic` headers, and `crate_type` attribute to be removed. Additionally it uses `--extern` like `aux_crate` (allows implicit `extern crate` in 2018) and `--extern proc_macro` (to place in the prelude in 2018).

~~This also includes a secondary change which defaults the edition of proc-macros to 2024. This further reduces boilerplate (removing `extern crate proc_macro;`), and allows using modern Rust syntax. I was a little on the fence including this. I personally prefer it, but I can imagine it might be confusing to others.~~ EDIT: Removed

Some tests were changed so that when there is a chain of dependencies A→B→C, that the `@ proc-macro` is placed in `B` instead of `A` so that the `--extern` flag works correctly (previously it depended on `-L` to find `C`). I think this is better to make the dependencies more explicit. None of these tests looked like the were actually testing this behavior.

There is one test that had an unexplained output change: `tests/ui/macros/same-sequence-span.rs`. I do not know why it changed, but it didn't look like it was particularly important. Perhaps there was a normalization issue?

This is currently not compatible with the rustdoc `build-aux-docs` header. It can probably be fixed, I'm just not feeling motivated to do that right now.

### Implementation steps

- [x] Document this new behavior in rustc-dev-guide once we figure out the specifics. https://github.com/rust-lang/rustc-dev-guide/pull/2149
2024-11-28 19:00:58 +00:00
Philipp Krones
b01e90103e
Merge commit 'ff4a26d442' into clippy-subtree-update 2024-11-28 19:38:59 +01:00
Laurențiu Nicola
ad6e993110 Merge from rust-lang/rust 2024-11-28 16:01:45 +02:00
Laurențiu Nicola
f3d83ba114 Preparing for merge from rust-lang/rust 2024-11-28 16:01:40 +02:00
klensy
c2cb99378a remove ctrlc, unused 2024-11-28 14:02:03 +03:00
Laurențiu Nicola
15e8a2691b Fix proc macro test 2024-11-28 09:40:14 +02:00
Ralf Jung
8e2d72bac8 silence clippy 2024-11-28 08:38:48 +01:00
Laurențiu Nicola
1a435ed7ed Bump rustc crates 2024-11-28 08:39:56 +02:00
Laurențiu Nicola
c91f2a3280 Merge from rust-lang/rust 2024-11-28 08:37:36 +02:00
Laurențiu Nicola
6e3cb4abfb Preparing for merge from rust-lang/rust 2024-11-28 08:37:22 +02:00
The Miri Cronjob Bot
2039a9fac0 fmt 2024-11-28 05:06:38 +00:00