| Age | Commit message (Collapse) | Author | Lines |
|
(cherry picked from commit 998ff2f0cd2902e86178d35b01ba78fe4633f80b)
|
|
|
|
Repeats the revert to `stable` https://github.com/rust-lang/rust/pull/133476
using https://patch-diff.githubusercontent.com/raw/rust-lang/rust/pull/133476.diff
|
|
|
|
#124141 preliminaries
Preliminary changes required to start removing `Nonterminal` (https://github.com/rust-lang/rust/pull/124141).
r? `@petrochenkov`
|
|
It's not used meaningfully yet, but will be needed to get rid of
interpolated tokens.
|
|
Reduce false positives of tail-expr-drop-order from consumed values (attempt #2)
r? `@nikomatsakis`
Tracked by #123739.
Related to #129864 but not replacing, yet.
Related to #130836.
This is an implementation of the approach suggested in the [Zulip stream](https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/temporary.20drop.20order.20changes). A new MIR statement `BackwardsIncompatibleDrop` is added to the MIR syntax. The lint now works by inspecting possibly live move paths before at the `BackwardsIncompatibleDrop` location and the actual drop under the current edition, which should be one before Edition 2024 in practice.
|
|
Rollup of 3 pull requests
Successful merges:
- #131904 (Stabilize const_pin_2)
- #133239 (Fix LLVM target triple for `x86_64-win7-windows-msvc`)
- #133241 (interpret: make typing_env field private)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
take 2
open up coroutines
tweak the wordings
the lint works up until 2021
We were missing one case, for ADTs, which was
causing `Result` to yield incorrect results.
only include field spans with significant types
deduplicate and eliminate field spans
switch to emit spans to impl Drops
Co-authored-by: Niko Matsakis <nikomat@amazon.com>
collect drops instead of taking liveness diff
apply some suggestions and add explantory notes
small fix on the cache
let the query recurse through coroutine
new suggestion format with extracted variable name
fine-tune the drop span and messages
bugfix on runtime borrows
tweak message wording
filter out ecosystem types earlier
apply suggestions
clippy
check lint level at session level
further restrict applicability of the lint
translate bid into nop for stable mir
detect cycle in type structure
|
|
Update cargo
5 commits in 69e595908e2c420e7f0d1be34e6c5b984c8cfb84..66221abdeca2002d318fde6efff516aab091df0e
2024-11-16 01:26:11 +0000 to 2024-11-19 21:30:02 +0000
- Docs for optional registry JSON fields (rust-lang/cargo#14839)
- Allow registries to omit empty/default fields in JSON (rust-lang/cargo#14838)
- docs(unstable): Link to -Zwarnings issue, tracking issue (rust-lang/cargo#14836)
- fix(): error context for git_fetch refspec not found (rust-lang/cargo#14806)
- you we distinction (rust-lang/cargo#14829)
|
|
|
|
continue `ParamEnv` to `TypingEnv` transition
cc #132279
r? `@compiler-errors`
|
|
|
|
r=compiler-errors
Remove `TokenKind::InvalidPrefix`
It's not needed. Best reviewed one commit at a time.
r? `@estebank`
|
|
|
|
|
|
|
|
Report the `unexpected_cfgs` lint in external macros
This PR marks the `unexpected_cfgs` lint as being reportable in external macros, as it's probably not the intention of the macro author to leave ineffective cfgs in the users code.
Fixes #132572
try-job: aarch64-gnu-debug
|
|
It was added in #123752 to handle some cases involving emoji, but it
isn't necessary because it's always treated the same as
`TokenKind::InvalidIdent`. This commit removes it, which makes things a
little simpler.
|
|
Use `TypingMode` throughout the compiler instead of `ParamEnv`
Hopefully the biggest single PR as part of https://github.com/rust-lang/types-team/issues/128.
## `infcx.typing_env` while defining opaque types
I don't know how'll be able to correctly handle opaque types when using something taking a `TypingEnv` while defining opaque types. To correctly handle the opaques we need to be able to pass in the current `opaque_type_storage` and return constraints, i.e. we need to use a proper canonical query. We should migrate all the queries used during HIR typeck and borrowck where this matters to proper canonical queries. This is
## `layout_of` and `Reveal::All`
We convert the `ParamEnv` to `Reveal::All` right at the start of the `layout_of` query, so I've changed callers of `layout_of` to already use a post analysis `TypingEnv` when encountering it.
https://github.com/rust-lang/rust/blob/ca87b535a05097df6abbe2a031b057de2cefac5b/compiler/rustc_ty_utils/src/layout.rs#L51
## `Ty::is_[unpin|sized|whatever]`
I haven't migrated `fn is_item_raw` to use `TypingEnv`, will do so in a followup PR, this should significantly reduce the amount of `typing_env.param_env`. At some point there will probably be zero such uses as using the type system while ignoring the `typing_mode` is incorrect.
## `MirPhase` and phase-transitions
When inside of a MIR-body, we can mostly use its `MirPhase` to figure out the right `typing_mode`. This does not work during phase transitions, most notably when transitioning from `Analysis` to `Runtime`:
https://github.com/rust-lang/rust/blob/dae7ac133b9eda152784c075facb31a6688c92b1/compiler/rustc_mir_transform/src/lib.rs#L606-L625
All these passes still run with `MirPhase::Analysis`, but we should only use `Reveal::All` once we're run the `RevealAll` pass. This required me to manually construct the right `TypingEnv` in all these passes. Given that it feels somewhat easy to accidentally miss this going forward, I would maybe like to change `Body::phase` to an `Option` and replace it at the start of phase transitions. This then makes it clear that the MIR is currently in a weird state.
r? `@ghost`
|
|
|
|
the behavior of the type system not only depends on the current
assumptions, but also the currentnphase of the compiler. This is
mostly necessary as we need to decide whether and how to reveal
opaque types. We track this via the `TypingMode`.
|
|
Subtree update of `rust-analyzer`
r? `@ghost`
|
|
Likely unlikely fix
RFC 1131 ( https://github.com/rust-lang/rust/issues/26179 ) added likely/unlikely intrinsics, but they have been broken for a while: https://github.com/rust-lang/rust/issues/96276 , https://github.com/rust-lang/rust/issues/96275 , https://github.com/rust-lang/rust/issues/88767 . This PR tries to fix them.
Changes:
- added a new `cold_path()` intrinsic
- `likely()` and `unlikely()` changed to regular functions implemented using `cold_path()`
|
|
Liberate `aarch64-gnu-debug` from the shackles of `--test-args=clang`
### Changes
- Drop `--test-args=clang` from `aarch64-gnu-debug` so run-make tests that are `//@ needs-force-clang-based-tests` no longer only run if their test name contains `clang` (which is a very cool footgun).
- Reorganize run-make-suport library slightly to accommodate a raw gcc invocation.
- Fix `tests/run-make/mte-ffi/rmake.rs` to use `gcc` instead of *a* c compiler.
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
|
|
|
|
Revert "tidy: validate LLVM component names in tests"
This reverts #125472.
This has already caused a [bit](https://github.com/rust-lang/rust/pull/125702) of [trouble](https://github.com/rust-lang/rust/pull/125710), and I was mistaken about the original motivation--incorrect component names [_will_](https://github.com/rust-lang/rust/pull/125702#issuecomment-2137030731) be detected by a full CI run.
I no longer think it pulls its weight.
r? `@workingjubilee`
|
|
Rollup of 7 pull requests
Successful merges:
- #131717 (Stabilize `const_atomic_from_ptr`)
- #132134 (Remove `ResultsVisitable`)
- #132449 (mark is_val_statically_known intrinsic as stably const-callable)
- #132569 (rustdoc search: allow queries to end in an empty path segment)
- #132787 (Unify FnKind between AST visitors and make WalkItemKind more straight forward)
- #132832 (Deny capturing late-bound ty/const params in nested opaques)
- #133097 (Opt out TaKO8Ki from review rotation for now)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Unify FnKind between AST visitors and make WalkItemKind more straight forward
Unifying `FnKind` requires a bunch of changes to `WalkItemKind::walk` signature so I'll change them in one go
related to #128974
r? `@petrochenkov`
|
|
They were converted to LSP position using the current file's line index, which is obviously wrong.
|
|
|
|
|
|
|
|
clippy-subtree-update
|
|
compiletest: known-bug / crashes: allow for an "auxiliary" directory to contain files that do not have a "known-bug" directive
Fixes #133009
r? `@jieyouxu`
|
|
There's already `min-llvm-version`, and contributors were using
`ignore-llvm-version: 20 - 99` to emulate `max-llvm-major-version: 19`.
|
|
contain files that do not have a "known-bug" directive
Fixes #133009
|
|
compiletest: Add ``exact-llvm-major-version`` directive
Now contributors don't need to use `min-llvm-version: X` + `ignore-llvm-version: X+1 - 99`, so they can simply use `exact-llvm-major-version: X`
To be honest, I didn't find any usages of that hack other than the one mentioned in the issue. ( `tests/codegen/try_question_mark_nop.rs`)
Closes #132348.
rustc-dev-guide PR for `//@ exact-llvm-major-version`: https://github.com/rust-lang/rustc-dev-guide/pull/2135
r? jieyouxu
|
|
|
|
|
|
Signed-off-by: Tarek <tareknaser360@gmail.com>
|
|
Add licenses + run `cargo update`
Replaces #131311
```
compiler & tools dependencies:
Locking 86 packages to latest compatible versions
Updating anstream v0.6.15 -> v0.6.17
Updating anstyle v1.0.8 -> v1.0.10
Updating anstyle-lossy v1.1.2 -> v1.1.3
Updating anstyle-parse v0.2.5 -> v0.2.6
Updating anstyle-query v1.1.1 -> v1.1.2
Updating anstyle-svg v0.1.5 -> v0.1.7
Updating anstyle-wincon v3.0.4 -> v3.0.6
Updating anyhow v1.0.89 -> v1.0.92
Updating arrayref v0.3.7 -> v0.3.9
Updating blake3 v1.5.2 -> v1.5.4
Updating bytes v1.7.2 -> v1.8.0
Updating cc v1.1.23 -> v1.1.34
Updating clap v4.5.18 -> v4.5.20
Updating clap_builder v4.5.18 -> v4.5.20
Updating clap_complete v4.5.29 -> v4.5.36
Updating colorchoice v1.0.2 -> v1.0.3
Updating constant_time_eq v0.3.0 -> v0.3.1
Updating curl v0.4.46 -> v0.4.47
Updating curl-sys v0.4.76+curl-8.10.1 -> v0.4.77+curl-8.10.1
Updating derive_builder v0.20.1 -> v0.20.2
Updating derive_builder_core v0.20.1 -> v0.20.2
Updating derive_builder_macro v0.20.1 -> v0.20.2
Adding foldhash v0.1.3
Updating futures v0.3.30 -> v0.3.31
Updating futures-channel v0.3.30 -> v0.3.31
Updating futures-core v0.3.30 -> v0.3.31
Updating futures-executor v0.3.30 -> v0.3.31
Updating futures-io v0.3.30 -> v0.3.31
Updating futures-macro v0.3.30 -> v0.3.31
Updating futures-sink v0.3.30 -> v0.3.31
Updating futures-task v0.3.30 -> v0.3.31
Updating futures-util v0.3.30 -> v0.3.31
Updating gimli v0.31.0 -> v0.31.1
Adding hashbrown v0.15.0
Updating indexmap v2.5.0 -> v2.6.0
Updating js-sys v0.3.70 -> v0.3.72
Updating libc v0.2.159 -> v0.2.161
Updating libm v0.2.8 -> v0.2.11
Updating object v0.36.4 -> v0.36.5
Updating once_cell v1.19.0 -> v1.20.2
Removing once_map v0.4.19
Updating openssl-sys v0.9.103 -> v0.9.104
Updating pathdiff v0.2.1 -> v0.2.2
Updating pest v2.7.13 -> v2.7.14
Updating pest_derive v2.7.13 -> v2.7.14
Updating pest_generator v2.7.13 -> v2.7.14
Updating pest_meta v2.7.13 -> v2.7.14
Updating pin-project-lite v0.2.14 -> v0.2.15
Updating proc-macro2 v1.0.86 -> v1.0.89
Updating redox_syscall v0.5.6 -> v0.5.7
Updating regex v1.10.6 -> v1.11.1
Updating regex-automata v0.4.7 -> v0.4.8
Updating regex-syntax v0.8.4 -> v0.8.5
Updating rinja v0.3.4 -> v0.3.5
Updating rinja_derive v0.3.4 -> v0.3.5
Updating rinja_parser v0.3.4 -> v0.3.5
Updating rustix v0.38.37 -> v0.38.38
Updating rustversion v1.0.17 -> v1.0.18
Updating schannel v0.1.24 -> v0.1.26
Updating serde v1.0.210 -> v1.0.214
Updating serde_derive v1.0.210 -> v1.0.214
Updating serde_json v1.0.128 -> v1.0.132
Updating syn v2.0.79 -> v2.0.87
Updating tar v0.4.42 -> v0.4.43
Updating terminal_size v0.3.0 -> v0.4.0
Updating thiserror v1.0.64 -> v1.0.66
Updating thiserror-impl v1.0.64 -> v1.0.66
Updating tokio v1.40.0 -> v1.41.0
Updating ucd-trie v0.1.6 -> v0.1.7
Updating unicase v2.7.0 -> v2.8.0
Updating unicode-bidi v0.3.15 -> v0.3.17
Updating unicode-properties v0.1.2 -> v0.1.3
Updating uuid v1.10.0 -> v1.11.0
Updating wasi-preview1-component-adapter-provider v24.0.0 -> v24.0.1 (latest: v25.0.1)
Updating wasm-bindgen v0.2.93 -> v0.2.95
Updating wasm-bindgen-backend v0.2.93 -> v0.2.95
Updating wasm-bindgen-macro v0.2.93 -> v0.2.95
Updating wasm-bindgen-macro-support v0.2.93 -> v0.2.95
Updating wasm-bindgen-shared v0.2.93 -> v0.2.95
Updating wasm-encoder v0.219.0 -> v0.219.1
Updating wasm-metadata v0.219.0 -> v0.219.1
Removing wasmparser v0.219.0
Adding wasmparser v0.218.0 (latest: v0.219.1)
Adding wasmparser v0.219.1
Updating wast v219.0.0 -> v219.0.1
Updating wat v1.219.0 -> v1.219.1
Updating wit-component v0.219.0 -> v0.219.1
Updating wit-parser v0.219.0 -> v0.219.1
library dependencies:
Locking 5 packages to latest compatible versions
Updating compiler_builtins v0.1.136 -> v0.1.138
Updating dlmalloc v0.2.6 -> v0.2.7
Updating object v0.36.4 -> v0.36.5
Updating windows-sys v0.52.0 -> v0.59.0
rustbook dependencies:
Updating anstream v0.6.15 -> v0.6.17
Updating anstyle v1.0.8 -> v1.0.10
Updating anstyle-parse v0.2.5 -> v0.2.6
Updating anstyle-query v1.1.1 -> v1.1.2
Updating anstyle-wincon v3.0.4 -> v3.0.6
Updating anyhow v1.0.89 -> v1.0.92
Updating cc v1.1.22 -> v1.1.34
Updating clap v4.5.18 -> v4.5.20
Updating clap_builder v4.5.18 -> v4.5.20
Updating clap_complete v4.5.29 -> v4.5.36
Updating colorchoice v1.0.2 -> v1.0.3
Updating hashbrown v0.14.5 -> v0.15.0
Updating indexmap v2.5.0 -> v2.6.0
Updating js-sys v0.3.70 -> v0.3.72
Updating libc v0.2.159 -> v0.2.161
Updating once_cell v1.19.0 -> v1.20.2
Updating pathdiff v0.2.1 -> v0.2.2
Updating pest v2.7.13 -> v2.7.14
Updating pest_derive v2.7.13 -> v2.7.14
Updating pest_generator v2.7.13 -> v2.7.14
Updating pest_meta v2.7.13 -> v2.7.14
Updating proc-macro2 v1.0.86 -> v1.0.89
Updating redox_syscall v0.5.6 -> v0.5.7
Updating regex v1.10.6 -> v1.11.1
Updating regex-automata v0.4.7 -> v0.4.8
Updating regex-syntax v0.8.4 -> v0.8.5
Updating rustix v0.38.37 -> v0.38.38
Updating serde v1.0.210 -> v1.0.214
Updating serde_derive v1.0.210 -> v1.0.214
Updating serde_json v1.0.128 -> v1.0.132
Updating syn v2.0.79 -> v2.0.87
Updating terminal_size v0.3.0 -> v0.4.0
Updating thiserror v1.0.64 -> v1.0.66
Updating thiserror-impl v1.0.64 -> v1.0.66
Updating ucd-trie v0.1.6 -> v0.1.7
Updating unicase v2.7.0 -> v2.8.0
Updating unicode-bidi v0.3.15 -> v0.3.17
Updating wasm-bindgen v0.2.93 -> v0.2.95
Updating wasm-bindgen-backend v0.2.93 -> v0.2.95
Updating wasm-bindgen-macro v0.2.93 -> v0.2.95
Updating wasm-bindgen-macro-support v0.2.93 -> v0.2.95
Updating wasm-bindgen-shared v0.2.93 -> v0.2.95
Removing windows-sys v0.48.0
Removing windows-targets v0.48.5
Removing windows_aarch64_gnullvm v0.48.5
Removing windows_aarch64_msvc v0.48.5
Removing windows_i686_gnu v0.48.5
Removing windows_i686_msvc v0.48.5
Removing windows_x86_64_gnu v0.48.5
Removing windows_x86_64_gnullvm v0.48.5
Removing windows_x86_64_msvc v0.48.5
```
|
|
|
|
stabilize const_unicode_case_lookup
Fixes https://github.com/rust-lang/rust/issues/101400
See there for t-libs-api FCP
|
|
AIX: add run-make support
On AIX, we are required explicit link against `c++` and `c++abi` to support running the run-make test suite.
|
|
Proper support for cross-crate recursive const stability checks
~~Stacked on top of https://github.com/rust-lang/rust/pull/132492; only the last three commits are new.~~
In a crate without `staged_api` but with `-Zforce-unstable-if-unmarked`, we now subject all functions marked with `#[rustc_const_stable_indirect]` to recursive const stability checks. We require an opt-in so that by default, a crate can be built with `-Zforce-unstable-if-unmarked` and use nightly features as usual. This property is recorded in the crate metadata so when a `staged_api` crate calls such a function, it sees the `#[rustc_const_stable_indirect]` and allows it to be exposed on stable. This, finally, will let us expose `const fn` from hashbrown on stable.
The second commit makes const stability more like regular stability: via `check_missing_const_stability`, we ensure that all publicly reachable functions have a const stability attribute -- both in `staged_api` crates and `-Zforce-unstable-if-unmarked` crates. To achieve this, we move around the stability computation so that const stability is computed after regular stability is done. This lets us access the final result of the regular stability computation, which we use so that `const fn` can inherit the regular stability (but only if that is "unstable"). Fortunately, this lets us get rid of an `Option` in `ConstStability`.
This is the last PR that I have planned in this series.
r? `@compiler-errors`
|
|
r=Mark-Simulacrum
extend the "if-unchanged" logic for compiler builds
Implements the first item from [this tracking issue](https://github.com/rust-lang/rust/issues/131744).
In short, we want to make "if-unchanged" logic to check for changes outside of certain allowed directories, and this PR implements that.
See https://github.com/rust-lang/rust/issues/131658 for more context.
|
|
|
|
|
|
|