1
Fork 0
Commit graph

272980 commits

Author SHA1 Message Date
Matthias Krüger
fd7183c39d
Rollup merge of #133880 - ChrisDenton:homedir, r=Mark-Simulacrum
Expand home_dir docs

Since `home_dir` is set to be undeprecated, let's make the docs a bit more thorough.
2024-12-09 01:56:33 +01:00
Matthias Krüger
38cc868e21
Rollup merge of #133789 - rossmacarthur:then-with-doc-alias, r=Mark-Simulacrum
Add doc alias 'then_with' for `then` method on `bool`

I think its logical to search for this name since `Ordering::then_with` exists as well.
2024-12-09 01:56:32 +01:00
Matthias Krüger
d2881e4eb5
Rollup merge of #133567 - bjorn3:various_cleanups, r=cjgillot
A bunch of cleanups

These are all extracted from a branch I have to get rid of driver queries. Most of the commits are not directly necessary for this, but were found in the process of implementing the removal of driver queries.

Previous PR: https://github.com/rust-lang/rust/pull/132410
2024-12-09 01:56:32 +01:00
bors
df5b8e39b7 Auto merge of #134039 - matthiaskrgr:rollup-ix8kdg1, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #133424 (Parse guard patterns)
 - #133733 ( compiletest: show the difference between the normalized output and the actual output for lines which didn't match)
 - #133993 (Fix: typo in E0751 error explanation)
 - #134013 (Adds new intrinsic declaration)
 - #134020 (Remove unnecessary `int_type_width_signed` function)
 - #134024 (Advent of `tests/ui` (misc cleanups and improvements) [2/N])
 - #134038 (deps: Update psm)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-12-08 22:11:42 +00:00
Ralf Jung
a33b4b1ca0 update lockfile 2024-12-08 22:54:38 +01:00
Nicholas Nethercote
fa6ceba208 Remove ChunkedBitSet impls that are no longer needed.
`ChunkedBitSet` is no longer used directly by dataflow analyses, with
`MixedBitSet` replacing it in those contexts.
2024-12-09 08:53:35 +11:00
Nicholas Nethercote
34f45f0d8f Use MixedBitSet instead of ChunkedBitSet in fmt.rs.
Just minimizing uses of `ChunkedBitSet`.
2024-12-09 08:53:35 +11:00
Nicholas Nethercote
dd28c40c29 Use BitSet in SparseBitMatrix.
A `ChunkedBitSet` has to be at least 2048 bits for it to outperform a
`BitSet`, because that's the chunk size. The largest `SparseBitMatrix`
encountered when compiling the compiler and the entire rustc-perf
benchmark suite is less than 600 bits.

This change is a tiny perf win, but the motivation is more about
avoiding uses of `ChunkedBitSet` outside of `MixedBitSet`.

The test change is necessary to avoid hitting the `<BitSet<T> as
BitRelations<ChunkedBitSet<T>>>::subtract` method that has
`unimplemented!` in its body and isn't otherwise used.
2024-12-09 08:53:33 +11:00
Giga Bowser
30e3d23f0e fix: Map new replacement nodes to their mutable equivalents in SyntaxEditor 2024-12-08 15:55:34 -05:00
Eric Huss
ef00d4f62b Fix some triagebot mentions paths 2024-12-08 12:22:11 -08:00
Rémy Rakic
91cf0cb729 bless test expectations
(in a separate commit for easier review, one of them is huge)
2024-12-08 20:21:46 +00:00
Rémy Rakic
95a1351c4a mark previously hanging tests as good to go 2024-12-08 20:21:46 +00:00
Rémy Rakic
62c71ccc7f improve --compare-mode error handling
- show the erroneous value
- show the valid values
2024-12-08 20:21:46 +00:00
bors
4d669fb34e Auto merge of #133134 - Walnut356:synth_prov, r=Mark-Simulacrum
Don't use a SyntheticProvider for literally every type

Replaces a glob regex with individualized imports for each standard library type. This improves debugger performance by quite a bit when populating lots of values with lots of fields

With the glob, afaik every single value of every single type that the debugger renders is run through a python function that does quite a few string comparisons (i plan to fix those next) to determine the SyntheticProvider to use.  It looks like DefaultSyntheticProvider's functions internally call the liblldb c++ functions, which ends up with identical behavior to not using a SyntheticProvider at all, except you have extra python round trips slowing things down.

These sample vidoes were run on x86-64-pc-windows-gnu. `vect` is a 1000 element `Vec<Big>`, `Big` contains a dozen or so `Small`, and `Small` contains a dozen or so `[i32; 5]`

Before:

https://github.com/user-attachments/assets/07c31fe7-e126-4c2e-8ae9-cfe36e351d3f

After:

https://github.com/user-attachments/assets/6c0d1a45-1ffe-46de-95a0-5dbe59a173b5

---

try-job: aarch64-apple
2024-12-08 19:30:33 +00:00
Sayantan Chakraborty
1220f393cc
Add the power8-crypto target feature 2024-12-09 00:41:35 +05:30
clubby789
c199c49aef Use SourceMap to load debugger visualizer files 2024-12-08 18:57:04 +00:00
clubby789
2d8a871d4b Downgrade cc 2024-12-08 18:18:03 +00:00
bjorn3
0df80949aa Use ensure for analysis calls 2024-12-08 16:57:09 +00:00
Matthias Krüger
5b133fe47d
Rollup merge of #134038 - ognevny:update-psm, r=ChrisDenton
deps: Update psm

part of #133456, which is blocked due to checks failure

see https://github.com/rust-lang/rust/pull/133456#issuecomment-2507102176

r? `@ChrisDenton`
2024-12-08 17:18:54 +01:00
Matthias Krüger
1aab767324
Rollup merge of #134024 - jieyouxu:ui-cleanup-2, r=Nadrieril
Advent of `tests/ui` (misc cleanups and improvements) [2/N]

Part of #133895.

Misc improvements to some ui tests immediately under `tests/ui/`.

Best reviewed commit-by-commit. Please see individual commit messages for some further rationale and change summaries.

r? compiler
2024-12-08 17:18:53 +01:00
Matthias Krüger
d619c4056c
Rollup merge of #134020 - scottmcm:fix-a-fixme, r=jieyouxu
Remove unnecessary `int_type_width_signed` function

This can just use `Ty::int_size_and_signed` instead of making its own version.

You might want to look at this [ignoring whitespace](https://github.com/rust-lang/rust/pull/134020/files?w=1) since a huge bunch of code got un-indented.
2024-12-08 17:18:52 +01:00
Matthias Krüger
fe5f5fd6b5
Rollup merge of #134013 - BLANKatGITHUB:intrinsic, r=saethlin
Adds new intrinsic declaration

This pr is for #132735 removes removes `extern "intrinsic"`

I think its the last block of this file and was kind of asking for advice how to handle other files as mentioned in the issue .
2024-12-08 17:18:52 +01:00
Matthias Krüger
11b0430fa2
Rollup merge of #133993 - LuanOldCode:fix-e0571-typo, r=compiler-errors
Fix: typo in E0751 error explanation

Corrected a grammatical error in the explanation for E0751. Changed "exists" to "exist" to improve clarity and ensure proper grammar in the error message.
2024-12-08 17:18:51 +01:00
Matthias Krüger
c05e7bde10
Rollup merge of #133733 - jyn514:compiletest-diffs, r=jieyouxu
compiletest: show the difference between the normalized output and the actual output for lines which didn't match

example output:
```
failures:

---- [ui] tests/ui/layout/enum.rs stdout ----
diff of stderr:

-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIGN }
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
2	  --> $DIR/enum.rs:9:1
3	   |
4	LL | enum UninhabitedVariantAlign {

Note: some mismatched output was normalized before being compared
-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: Align(8 bytes) }
-	  --> /home/jyn/src/rust2/tests/ui/layout/enum.rs:9:1
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
```
2024-12-08 17:18:51 +01:00
Matthias Krüger
1868c8f66f
Rollup merge of #133424 - Nadrieril:guard-patterns-parsing, r=fee1-dead
Parse guard patterns

This implements the parsing of [RFC3637 Guard Patterns](https://rust-lang.github.io/rfcs/3637-guard-patterns.html) (see also [tracking issue](https://github.com/rust-lang/rust/issues/129967)). This PR is extracted from https://github.com/rust-lang/rust/pull/129996 with minor modifications.

cc `@max-niederman`
2024-12-08 17:18:50 +01:00
Maksim Bondarenkov
dd875edc59 deps: Update psm 2024-12-08 18:58:15 +03:00
Matthias Krüger
8d5236fa1c crash tests: use individual mir opts instead of mir-opt-level where easily possible 2024-12-08 16:52:32 +01:00
onur-ozkan
d3b5340878 handle cygwin environments in install::sanitize_sh
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-12-08 18:27:46 +03:00
onur-ozkan
c4d7f1d29f implement TargetSelection::is_cygwin function
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-12-08 18:27:22 +03:00
aaishwarymishra@gmail.com
292fd0ffed Adds new intrinsic declaration
changes old intrinsic to new declaration
2024-12-08 19:46:45 +05:30
bors
f33a8c6426 Auto merge of #134033 - matthiaskrgr:rollup-69fswyh, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #131669 (lint: change help for pointers to dyn types in FFI)
 - #133104 (crashes: add test for #131451)
 - #133767 (Add more info on type/trait mismatches for different crate versions)
 - #133861 (Add allocate_bytes and refactor allocate_str in InterpCx for raw byte…)
 - #133976 (Removed Unnecessary Spaces From RELEASES.md)
 - #133987 (Define acronym for thread local storage)
 - #133992 (Actually walk into lifetimes and attrs in `EarlyContextAndPass`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-12-08 13:32:19 +00:00
Matthias Krüger
d4b5345248
Rollup merge of #133992 - compiler-errors:walk-fully, r=jieyouxu
Actually walk into lifetimes and attrs in `EarlyContextAndPass`

Visitors that don't also call `walk_*` are kinda a footgun...

I believe all the other early lint functions walk into their types correctly at this point.
2024-12-08 14:28:26 +01:00
Matthias Krüger
a12f3aaf3d
Rollup merge of #133987 - Will-Low:DefineTlsAcronym, r=workingjubilee
Define acronym for thread local storage

There are multiple references in this module's documentation to the acronym "TLS" (meaning "thread local storage"), without defining it. This is confusing for the reader.

I propose that this acronym be defined during the first use of the term.
2024-12-08 14:28:25 +01:00
Matthias Krüger
bf74478bab
Rollup merge of #133976 - rohit141914:master, r=workingjubilee
Removed Unnecessary Spaces From RELEASES.md
2024-12-08 14:28:25 +01:00
Matthias Krüger
0d26662fd3
Rollup merge of #133861 - shamb0:refactor_InterpCx_allocate_str, r=RalfJung
Add allocate_bytes and refactor allocate_str in InterpCx for raw byte…

Fixes https://github.com/rust-lang/miri/issues/4025

This PR introduces a new `allocate_bytes` function in InterpCx and refactors `allocate_str` to use it internally. This change improves memory allocation handling in the interpreter by:

1. Adding `allocate_bytes`:
   - Direct byte slice allocation support
   - Handles both mutable and immutable allocations
   - Maintains proper memory alignment and deduplication

2. Refactoring `allocate_str`:
   - Now uses `allocate_bytes` internally
   - Adds string-specific metadata handling
   - Preserves existing string allocation behavior

This is part 1 of the planned changes to improve timezone string handling in Miri. A follow-up PR will update Miri's timezone logic to use this new allocation mechanism.

Related: https://github.com/rust-lang/miri/pull/4069
2024-12-08 14:28:24 +01:00
Matthias Krüger
a369714a29
Rollup merge of #133767 - estebank:multiple-dep-version-tests, r=Nadrieril
Add more info on type/trait mismatches for different crate versions

When encountering a type or trait mismatch for two types coming from two different crates with the same name, detect if it is either mixing two types/traits from the same crate on different versions:

```
error[E0308]: mismatched types
  --> replaced
   |
LL |     do_something_type(Type);
   |     ----------------- ^^^^ expected `dependency::Type`, found `dep_2_reexport::Type`
   |     |
   |     arguments to this function are incorrect
   |
note: two different versions of crate `dependency` are being used; two types coming from two different versions of the same crate are different types even if they look the same
  --> replaced
   |
LL | pub struct Type(pub i32);
   | ^^^^^^^^^^^^^^^ this is the expected type `dependency::Type`
   |
  ::: replaced
   |
LL | pub struct Type;
   | ^^^^^^^^^^^^^^^ this is the found type `dep_2_reexport::Type`
   |
  ::: replaced
   |
LL | extern crate dep_2_reexport;
   | ---------------------------- one version of crate `dependency` is used here, as a dependency of crate `foo`
LL | extern crate dependency;
   | ------------------------ one version of crate `dependency` is used here, as a direct dependency of the current crate
   = help: you can use `cargo tree` to explore your dependency tree
note: function defined here
  --> replaced
   |
LL | pub fn do_something_type(_: Type) {}
   |        ^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
  --> replaced
   |
LL |     do_something_trait(Box::new(Type) as Box<dyn Trait2>);
   |     ------------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `dependency::Trait2`, found trait `dep_2_reexport::Trait2`
   |     |
   |     arguments to this function are incorrect
   |
note: two different versions of crate `dependency` are being used; two types coming from two different versions of the same crate are different types even if they look the same
  --> replaced
   |
LL | pub trait Trait2 {}
   | ^^^^^^^^^^^^^^^^ this is the expected trait `dependency::Trait2`
   |
  ::: replaced
   |
LL | pub trait Trait2 {}
   | ^^^^^^^^^^^^^^^^ this is the found trait `dep_2_reexport::Trait2`
   |
  ::: replaced
   |
LL | extern crate dep_2_reexport;
   | ---------------------------- one version of crate `dependency` is used here, as a dependency of crate `foo`
LL | extern crate dependency;
   | ------------------------ one version of crate `dependency` is used here, as a direct dependency of the current crate
   = help: you can use `cargo tree` to explore your dependency tree
note: function defined here
  --> replaced
   |
LL | pub fn do_something_trait(_: Box<dyn Trait2>) {}
   |        ^^^^^^^^^^^^^^^^^^
```

or if it is different crates that were renamed to the same name:

```
error[E0308]: mismatched types
  --> $DIR/type-mismatch-same-crate-name.rs:21:20
   |
LL |         a::try_foo(foo2);
   |         ---------- ^^^^ expected `main:🅰️:Foo`, found a different `main:🅰️:Foo`
   |         |
   |         arguments to this function are incorrect
   |
note: two types coming from two different crates are different types even if they look the same
  --> $DIR/auxiliary/crate_a2.rs:1:1
   |
LL | pub struct Foo;
   | ^^^^^^^^^^^^^^ this is the found type `crate_a2::Foo`
   |
  ::: $DIR/auxiliary/crate_a1.rs:1:1
   |
LL | pub struct Foo;
   | ^^^^^^^^^^^^^^ this is the expected type `crate_a1::Foo`
   |
  ::: $DIR/type-mismatch-same-crate-name.rs:13:17
   |
LL |     let foo2 = {extern crate crate_a2 as a; a::Foo};
   |                 --------------------------- one type comes from crate `crate_a2` is used here, which is renamed locally to `a`
...
LL |         extern crate crate_a1 as a;
   |         --------------------------- one type comes from crate `crate_a1` is used here, which is renamed locally to `a`
note: function defined here
  --> $DIR/auxiliary/crate_a1.rs:10:8
   |
LL | pub fn try_foo(x: Foo){}
   |        ^^^^^^^

error[E0308]: mismatched types
  --> $DIR/type-mismatch-same-crate-name.rs:27:20
   |
LL |         a::try_bar(bar2);
   |         ---------- ^^^^ expected trait `main:🅰️:Bar`, found a different trait `main:🅰️:Bar`
   |         |
   |         arguments to this function are incorrect
   |
note: two types coming from two different crates are different types even if they look the same
  --> $DIR/auxiliary/crate_a2.rs:3:1
   |
LL | pub trait Bar {}
   | ^^^^^^^^^^^^^ this is the found trait `crate_a2::Bar`
   |
  ::: $DIR/auxiliary/crate_a1.rs:3:1
   |
LL | pub trait Bar {}
   | ^^^^^^^^^^^^^ this is the expected trait `crate_a1::Bar`
   |
  ::: $DIR/type-mismatch-same-crate-name.rs:13:17
   |
LL |     let foo2 = {extern crate crate_a2 as a; a::Foo};
   |                 --------------------------- one trait comes from crate `crate_a2` is used here, which is renamed locally to `a`
...
LL |         extern crate crate_a1 as a;
   |         --------------------------- one trait comes from crate `crate_a1` is used here, which is renamed locally to `a`
note: function defined here
  --> $DIR/auxiliary/crate_a1.rs:11:8
   |
LL | pub fn try_bar(x: Box<Bar>){}
   |        ^^^^^^^
```

This new output unifies the E0308 errors detail with the pre-existing E0277 errors, and better differentiates the "`extern crate` renamed" and "same crate, different versions" cases.
2024-12-08 14:28:24 +01:00
Matthias Krüger
5101833d7a
Rollup merge of #133104 - matthiaskrgr:crashtest_debugass_131451.rs, r=saethlin
crashes: add test for #131451

r? `@saethlin`
How do I find out which mir opts are involved here? 😅
2024-12-08 14:28:23 +01:00
Matthias Krüger
703bb98230
Rollup merge of #131669 - niacdoial:linting-ptrdyn-ffi, r=workingjubilee
lint: change help for pointers to dyn types in FFI

### Context
while playing around, I encountered the warning for dyn types in `extern "C"` functions, but even after that I assumed that a (rust) raw pointer could be interpreted in C ('s ABI) as a `void *`... to be fair part of why I ignored the warning is because I wanted to poke at the generated assembly, not make useful code.

### Example

```rust
extern "C"
fn caller(callee: *const dyn Fn(i32)->i32){
    // -- snip --
}
```

old warning:
```
warning: `extern` fn uses type `dyn Fn(i32) -> i32`, which is not FFI-safe
 --> file/name.rs:42:19
   |
42 | fn caller(callee: *const dyn Fn(i32)->i32) {
   |                   ^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
   |
  = note: trait objects have no C equivalent
  = note: `#[warn(improper_ctypes_definitions)]` on by default
  ```

new warning:
```
warning: `extern` fn uses type `dyn Fn(i32) -> i32`, which is not FFI-safe
 --> file/name.rs:42:19
   |
42 | fn caller(callee: *const dyn Fn(i32)->i32) -> (){
   |                   ^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
   |
  = note: this pointer to an unsized type contains metadata, which makes it incompatible with a C pointer
  = note: `#[warn(improper_ctypes_definitions)]` on by default
```
2024-12-08 14:28:22 +01:00
Chayim Refael Friedman
ee300059c5 Fix a test that didn't test what it should
That is, fix the helper function and disable the tests for now.
2024-12-08 15:02:14 +02:00
Prajwal S N
477b722fe1
docs: better examples for std::ops::ControlFlow
Signed-off-by: Prajwal S N <prajwalnadig21@gmail.com>
2024-12-08 18:21:15 +05:30
Matthias Krüger
159ed85d24 crashes: add test for #131451 2024-12-08 13:09:46 +01:00
Zalathar
3a35fb6938 coverage: Unused functions don't need to store CoverageIdsInfo 2024-12-08 21:00:53 +11:00
Zalathar
4d2bfece41 coverage: Remove FunctionCoverageCollector
The information that was being collected by this builder type is now collected
by the `coverage_ids_info` query instead.
2024-12-08 20:53:57 +11:00
Zalathar
2022ef7f12 coverage: Use a query to find counters/expressions that must be zero
This query (`coverage_ids_info`) already determines which counter/expression
IDs are unused, so it only takes a little extra effort to also determine which
counters/expressions must have a value of zero.
2024-12-08 20:53:39 +11:00
bors
f415c07494 Auto merge of #133522 - estebank:dont-suggest-unstable-trait, r=compiler-errors
Don't suggest restricting bound with unstable traits on stable and mention it's unstable on nightly

On nightly, we mention the trait is unstable

```
error[E0277]: the trait bound `T: Unstable` is not satisfied
  --> $DIR/unstable-trait-suggestion.rs:13:9
   |
LL |     foo(t)
   |     --- ^ the trait `Unstable` is not implemented for `T`
   |     |
   |     required by a bound introduced by this call
   |
note: required by a bound in `foo`
  --> $DIR/unstable-trait-suggestion.rs:9:11
   |
LL | fn foo<T: Unstable>(_: T) {}
   |           ^^^^^^^^ required by this bound in `foo`
help: consider restricting type parameter `T` but it is an `unstable` trait
   |
LL | pub fn demo<T: Unstable>(t: T) {
   |              ++++++++++
```

On stable, we don't suggest the trait at all

```
error[E0277]: the trait bound `T: Unstable` is not satisfied
  --> $DIR/unstable-trait-suggestion.rs:13:9
   |
LL |     foo(t)
   |     --- ^ the trait `Unstable` is not implemented for `T`
   |     |
   |     required by a bound introduced by this call
   |
note: required by a bound in `foo`
  --> $DIR/unstable-trait-suggestion.rs:9:11
   |
LL | fn foo<T: Unstable>(_: T) {}
   |           ^^^^^^^^ required by this bound in `foo`
```

Fix #133511.
2024-12-08 09:12:31 +00:00
Ben Kimock
4740b0fda2
Merge pull request #4081 from rust-lang/rustup-2024-12-08
Automatic Rustup
2024-12-08 07:45:35 +00:00
许杰友 Jieyou Xu (Joe)
754dec3fbc Adjust atomic-from-mut-not-available.rs
- Introduce two revisions: one for 32-bit x86 vs one for 64-bit x86_64
  and compare & contrast the errors.
- Document the test intention and note its limitations.
2024-12-08 15:32:04 +08:00
许杰友 Jieyou Xu (Joe)
1247f01a3c Move atomic-from-mut-not-available.rs to tests/ui/stdlib-unit-tests/
This test exercises the combined effect of the
`cfg(target_has_atomic_equal_alignment = "...")` implementation in the
compiler as well as the usage of said
`cfg(target_has_atomic_equal_alignment)` in `core`.
2024-12-08 15:32:04 +08:00
许杰友 Jieyou Xu (Joe)
3a33522ca8 Adjust assoc-oddities-3.rs
- Include the original MCVE as reported in
  <https://github.com/rust-lang/rust/issues/28777>.
- Document the intention of the test.
2024-12-08 15:32:04 +08:00
许杰友 Jieyou Xu (Joe)
b815a93614 Move assoc-oddities-3.rs under tests/ui/parser/assoc/
This is where `assoc-oddities-{1,2}.rs` are located, reunite them!
2024-12-08 15:32:04 +08:00