Commit Graph

260472 Commits

Author SHA1 Message Date
许杰友 Jieyou Xu (Joe) adbcb1a8a9
Rollup merge of #126921 - workingjubilee:outline-va-list, r=Nilstrieb
Give VaList its own home

Just rearranging things internally and reexporting.
2024-07-08 13:04:31 +08:00
许杰友 Jieyou Xu (Joe) 29c1a43403
Rollup merge of #126881 - WaffleLapkin:unsafe-code-affected-by-fallback-hard-in-2024, r=compiler-errors
Make `NEVER_TYPE_FALLBACK_FLOWING_INTO_UNSAFE` a deny-by-default lint in edition 2024

I don't actually really care about this, but ``@traviscross`` asked me to do this, because lang team briefly discussed this before.

(TC here:)

Specifically, our original FCPed plan included this step:

- Add a lint against fallback affecting a generic that is passed to an `unsafe` function.
   - Perhaps make this lint `deny-by-default` or a hard error in Rust 2024.

That is, we had left as an open question strengthening this in Rust 2024, and had marked it as an open question on the tracking issue.  We're nominating here to address the open question.  (Closing the remaining open question helps us to fully mark this off for Rust 2024.)

r? ``@compiler-errors``

Tracking:

- https://github.com/rust-lang/rust/issues/123748
2024-07-08 13:04:30 +08:00
许杰友 Jieyou Xu (Joe) 2c16d65c1e
Rollup merge of #126841 - c410-f3r:concat-again, r=petrochenkov
[`macro_metavar_expr_concat`] Add support for literals

Adds support for things like `${concat($variable, 123)}` or `${concat("hello", "_world")}` .

cc #124225
2024-07-08 13:04:30 +08:00
bors 776ab988c1 Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung
Support tail calls in mir via `TerminatorKind::TailCall`

This is one of the interesting bits in tail call implementation — MIR support.

This adds a new `TerminatorKind` which represents a tail call:
```rust
    TailCall {
        func: Operand<'tcx>,
        args: Vec<Operand<'tcx>>,
        fn_span: Span,
    },
```

*Structurally* this is very similar to a normal `Call` but is missing a few fields:
- `destination` — tail calls don't write to destination, instead they pass caller's destination to the callee (such that eventual `return` will write to the caller of the function that used tail call)
- `target` — similarly to `destination` tail calls pass the caller's return address to the callee, so there is nothing to do
- `unwind` — I _think_ this is applicable too, although it's a bit confusing
- `call_source` — `become` forbids operators and is not created as a lowering of something else; tail calls always come from HIR (at least for now)

It might be helpful to read the interpreter implementation to understand what `TailCall` means exactly, although I've tried documenting it too.

-----

There are a few `FIXME`-questions still left, ideally we'd be able to answer them during review ':)

-----

r? `@oli-obk`
cc `@scottmcm` `@DrMeepster` `@JakobDegen`
2024-07-08 04:35:04 +00:00
bors 9af6fee87d Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung
Support tail calls in mir via `TerminatorKind::TailCall`

This is one of the interesting bits in tail call implementation — MIR support.

This adds a new `TerminatorKind` which represents a tail call:
```rust
    TailCall {
        func: Operand<'tcx>,
        args: Vec<Operand<'tcx>>,
        fn_span: Span,
    },
```

*Structurally* this is very similar to a normal `Call` but is missing a few fields:
- `destination` — tail calls don't write to destination, instead they pass caller's destination to the callee (such that eventual `return` will write to the caller of the function that used tail call)
- `target` — similarly to `destination` tail calls pass the caller's return address to the callee, so there is nothing to do
- `unwind` — I _think_ this is applicable too, although it's a bit confusing
- `call_source` — `become` forbids operators and is not created as a lowering of something else; tail calls always come from HIR (at least for now)

It might be helpful to read the interpreter implementation to understand what `TailCall` means exactly, although I've tried documenting it too.

-----

There are a few `FIXME`-questions still left, ideally we'd be able to answer them during review ':)

-----

r? `@oli-obk`
cc `@scottmcm` `@DrMeepster` `@JakobDegen`
2024-07-08 04:35:04 +00:00
bors 1e3f8c6e13 Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung
Support tail calls in mir via `TerminatorKind::TailCall`

This is one of the interesting bits in tail call implementation — MIR support.

This adds a new `TerminatorKind` which represents a tail call:
```rust
    TailCall {
        func: Operand<'tcx>,
        args: Vec<Operand<'tcx>>,
        fn_span: Span,
    },
```

*Structurally* this is very similar to a normal `Call` but is missing a few fields:
- `destination` — tail calls don't write to destination, instead they pass caller's destination to the callee (such that eventual `return` will write to the caller of the function that used tail call)
- `target` — similarly to `destination` tail calls pass the caller's return address to the callee, so there is nothing to do
- `unwind` — I _think_ this is applicable too, although it's a bit confusing
- `call_source` — `become` forbids operators and is not created as a lowering of something else; tail calls always come from HIR (at least for now)

It might be helpful to read the interpreter implementation to understand what `TailCall` means exactly, although I've tried documenting it too.

-----

There are a few `FIXME`-questions still left, ideally we'd be able to answer them during review ':)

-----

r? `@oli-obk`
cc `@scottmcm` `@DrMeepster` `@JakobDegen`
2024-07-08 04:35:04 +00:00
bors b1de36ff34 Auto merge of #127421 - cjgillot:cache-iter, r=fmease
Cache hir_owner_nodes in ParentHirIterator.

Lint level computation may traverse deep HIR trees using that iterator. This calls `hir_owner_nodes` many times for the same HIR owner, which is wasterful.

This PR caches the value to allow a more efficient iteration scheme.

r? ghost for perf
2024-07-08 01:19:32 +00:00
bors 1de41b18d2 Auto merge of #13068 - Jarcho:init_numbered, r=Alexendoo
Rework `init_numbered_fields`

Two behaviour changes:
* Not linting in macros
* Not linting when side effects might be reordered

changelog: `init_numbered_fields`: Don't suggest reordering side effects.
2024-07-08 00:28:03 +00:00
Jason Newcomb 5b7ffa1a63 Rework `init_numbered_fields`:
* Only check the name of a single field
* Don't lint in macros
* Check for side effects
* Don't use a binary heap
2024-07-07 20:15:19 -04:00
bors 89aefb9c53 Auto merge of #127172 - compiler-errors:full-can_eq-everywhere, r=lcnr
Make `can_eq` process obligations (almost) everywhere

Move `can_eq` to an extension trait on `InferCtxt` in `rustc_trait_selection`, and change it so that it processes obligations. This should strengthen it to be more accurate in some cases, but is most important for the new trait solver which delays relating aliases to `AliasRelate` goals. Without this, we always basically just return true when passing aliases to `can_eq`, which can lead to weird errors, for example #127149.

I'm not actually certain if we should *have* `can_eq` be called on the good path. In cases where we need `can_eq`, we probably should just be using a regular probe.

Fixes #127149

r? lcnr
2024-07-07 23:03:48 +00:00
Jason Newcomb eda45aaba1 `minmax`: use let chain 2024-07-07 18:12:39 -04:00
Jason Newcomb 488a545a50 `map_unit_fn`: Delay macro check 2024-07-07 18:12:05 -04:00
Jason Newcomb 7a942a5c99 `manual_unwrap_or_default`: Check HIR tree first. 2024-07-07 18:11:55 -04:00
Jason Newcomb 5d333e862b `manual_strip`: Delay msrv check. 2024-07-07 18:11:43 -04:00
Jason Newcomb c0068ba5ac `manual_slice_size_calculation`: Delay constant check. 2024-07-07 18:11:05 -04:00
Jason Newcomb 03117026ae `manual_retain`: Remove redundant match. 2024-07-07 18:10:46 -04:00
Jason Newcomb 0f4cd13f66 `manual_rem_euclid`: Check HIR tree first. 2024-07-07 18:08:44 -04:00
Jason Newcomb 44f87e8cc1 `manual_range_patterns`: Delay macro check. 2024-07-07 18:08:11 -04:00
Jason Newcomb 2309f8e4a1 `manual_non_exhaustive`: Delay msrv check. 2024-07-07 18:08:02 -04:00
Jason Newcomb f46c981f3f `manual_main_separator_str`: Check HIR tree first. 2024-07-07 18:07:52 -04:00
Jason Newcomb 2d9e67ea8a `manual_let_else`: Delay msrv and macro checks. 2024-07-07 18:07:36 -04:00
Jason Newcomb 95348adcb9 `manual_float_methods`:
* Check HIR tree first.
* Use `partition_in_place`.
2024-07-07 18:07:16 -04:00
Jason Newcomb b9ba340db6 `manual_bits`: Delay msrv check 2024-07-07 18:06:36 -04:00
Jason Newcomb c0fa6a92f0 `literal_representation`: Delay macro check. 2024-07-07 18:06:27 -04:00
Jason Newcomb 15f640a7cb `let_with_type_underscore`:
* Delay macro check.
* Use `is_from_proc_macro
2024-07-07 18:06:17 -04:00
Jason Newcomb 5332def0fd `let_underscore`: Delay macro check. 2024-07-07 18:06:00 -04:00
Jason Newcomb fed75b3895 `let_if_seq`: use `array_windows`. 2024-07-07 18:05:51 -04:00
Jason Newcomb ff4e62d3ec `len_zero`: Check HIR tree first 2024-07-07 18:05:41 -04:00
Alex Macleod eac1aab1ff Reduce the size of lintcheck JSON output 2024-07-07 21:05:51 +00:00
Jason Newcomb 5ae33c7699 `legacy_numeric_constants`: Check HIR tree first. 2024-07-07 16:52:59 -04:00
Jason Newcomb 03036c11b3 `large_include_file`: Check HIR tree first. 2024-07-07 16:52:33 -04:00
Jason Newcomb c3dd028d3e `large_futures`: Delay macro check 2024-07-07 16:52:13 -04:00
Jason Newcomb 430c02cbd0 `large_enum_variant`: Delay macro check 2024-07-07 16:51:58 -04:00
Jason Newcomb 3092c8a5fd `large_const_arrays`: Check HIR tree first. 2024-07-07 16:51:33 -04:00
Jason Newcomb 6b10b4360c `iter_without_into_iter`: Delay macro check 2024-07-07 16:51:20 -04:00
Jason Newcomb fa1a690b23 `iter_not_returning_iterator`:
* Check HIR tree first.
* Check name by symbol.
2024-07-07 16:43:07 -04:00
Jason Newcomb ca5c2813eb `items_after_statements`: Do less work in the default case. 2024-07-07 16:41:36 -04:00
Jason Newcomb aef0710054 `instant_subtraction`: Reduce redundant work. 2024-07-07 16:37:51 -04:00
Jason Newcomb dc8403f0f5 `inline_fn_without_body`: inline into a single function 2024-07-07 16:37:31 -04:00
Jason Newcomb 8e2ddc800b `inherent_to_string`: Check HIR tree before checking for macros. 2024-07-07 16:35:05 -04:00
bors 20ae37c18d Auto merge of #127385 - weihanglo:update-cargo, r=weihanglo
Update cargo

20 commits in a515d463427b3912ec0365d106791f88c1c14e1b..154fdac39ae9629954e19e9986fd2cf2cdd8d964
2024-07-02 20:53:36 +0000 to 2024-07-07 01:28:23 +0000
- test: relax redactions for rust-lang/rust (rust-lang/cargo#14203)
- use "bootstrap" instead of "rustbuild" (rust-lang/cargo#14207)
- test: migrate serveral files to snapbox (rust-lang/cargo#14180)
- Add rustdocflags to Unit's Debug impl (rust-lang/cargo#14201)
- Allow enabling `config-include` feature in config (rust-lang/cargo#14196)
- fix(test): Restore `does_not_contain` for check (rust-lang/cargo#14198)
- test: migrate patch, pkgid, proc_macro and progress to snapbox (rust-lang/cargo#14181)
- test: Migrate jobserver to snapbox (rust-lang/cargo#14191)
- chore(deps): update msrv (3 versions) to v1.77 (rust-lang/cargo#14186)
- test: migrate build_plan and build_script to snapbox (rust-lang/cargo#14193)
- test: migrate cfg and check to snapbox (rust-lang/cargo#14185)
- test: migrate install* and inheritable_workspace_fields to snapbox (rust-lang/cargo#14170)
- Pass rustflags to artifacts built with implicit targets when using target-applies-to-host (rust-lang/cargo#13900)
- test: Migrate network tests to snapbox (rust-lang/cargo#14187)
- test: migrate some files to snapbox (rust-lang/cargo#14113)
- test: Auto-redact `... after last build at ...`; Migrate `freshness` to Snapbox (rust-lang/cargo#14161)
- chore: fix some typos (rust-lang/cargo#14182)
- fix: improve message for inactive weak optional feature with edition2024 through unused dep collection (rust-lang/cargo#14026)
- test:migrate `doc/directory/docscrape` to snapbox (rust-lang/cargo#14171)
- test: Migrate git_auth to snapbox (rust-lang/cargo#14172)
2024-07-07 19:54:14 +00:00
Pavel Grigorenko 8076a33fb7 bootstrap: once_cell::sync::Lazy -> std::sync::LazyLock 2024-07-07 22:00:32 +03:00
bors a4132817fb Auto merge of #13052 - xFrednet:00000-lintcheck-warn-all, r=Alexendoo
Lintcheck: Add `--warn-all` and make it the CI default

This PR adds a new `--warn-all` flag to lintcheck. This is intended for our CI, as it currently doesn't detect changes of `nursery` and `restriction` lints.

I only made it the default for the CI, as `restriction` lints tend to generate A LOT of lint triggers. Looking at you [`clippy::implicit_return`](https://rust-lang.github.io/rust-clippy/master/index.html#/clippy::implicit_return)

That's it. Should hopefully be easy to review.

Also, a bit thanks again to `@Alexendoo` for adding this to our CI ❤️

---

r? `@Alexendoo`

changelog: none
2024-07-07 18:30:39 +00:00
Maybe Lapkin 14e5d5fbee Fixup a typo in a comment in a test 2024-07-07 20:18:42 +02:00
Maybe Lapkin 39eaefc15d Fixup conflict with r-l/r/126567 2024-07-07 20:16:48 +02:00
Maybe Lapkin f3c13bf280 Allow casting `*mut dyn T`->`*mut (dyn T + Send)` if `T` has `Send` super trait 2024-07-07 20:07:01 +02:00
xFrednet 93e74a4187
Lintcheck: Update lintcheck documentation 2024-07-07 18:42:09 +02:00
Pavel Grigorenko 32294aa5f5 Add tests for #112905 2024-07-07 19:38:04 +03:00
bors 0ca92de473 Auto merge of #127454 - matthiaskrgr:rollup-k3vfen2, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #127179 (Print `TypeId` as hex for debugging)
 - #127189 (LinkedList's Cursor: method to get a ref to the cursor's list)
 - #127236 (doc: update config file path in platform-support/wasm32-wasip1-threads.md)
 - #127297 (Improve std::Path's Hash quality by avoiding prefix collisions)
 - #127308 (Attribute cleanups)
 - #127354 (Describe Sized requirements for mem::offset_of)
 - #127409 (Emit a wrap expr span_bug only if context is not tainted)
 - #127447 (once_lock: make test not take as long in Miri)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-07-07 16:29:52 +00:00
Maybe Lapkin 7fd0c55a1a Fix conflicts after rebase
- r-l/r 126784
- r-l/r 127113
- r-l/miri 3562
2024-07-07 18:16:38 +02:00