Commit Graph

320134 Commits

Author SHA1 Message Date
Jonathan Brouwer bef489b0ce Rollup merge of #152943 - CoCo-Japan-pan:impl-restriction-parse, r=Urgau,jhpratt
Parse `impl` restrictions

This PR implements the parsing logic for `impl` restrictions (e.g., `pub impl(crate) trait Foo {}`) as proposed in [RFC 3323](https://rust-lang.github.io/rfcs/3323-restrictions.html).
As the first step of the RFC implementation, this PR focuses strictly on the parsing phase. The new syntax is guarded by the `#![feature(impl_restriction)]` feature gate.
This implementation basically follows the pattern used in rust-lang/rust#141754.

r? @jhpratt
2026-03-03 13:08:43 +01:00
Jonathan Brouwer 8b1ebb3e3a Rollup merge of #153336 - folkertdev:stdarch-sync-2026-03-03, r=folkertdev
stdarch subtree update

Subtree update of `stdarch` to https://github.com/rust-lang/stdarch/commit/d4a226dc06f5f3a89607747038a994e956ae724b.

Created using https://github.com/rust-lang/josh-sync.

r? @ghost
2026-03-03 13:08:42 +01:00
bors 1b7d722f42 Auto merge of #153331 - JonathanBrouwer:rollup-hr9XbEa, r=JonathanBrouwer
Rollup of 12 pull requests

Successful merges:

 - rust-lang/rust#152941 (prefer actual ABI-controling fields over target.abi when making ABI decisions)
 - rust-lang/rust#153227 (Don’t report missing fields in struct exprs with syntax errors.)
 - rust-lang/rust#153265 (Clarified doc comments + added tests confirming current behavior for intersperse/intersperse_with)
 - rust-lang/rust#152966 (Migrate 11 tests from tests/ui/issues to specific directories)
 - rust-lang/rust#153003 (rustdoc: make `--emit` and `--out-dir` mimic rustc)
 - rust-lang/rust#153034 (Remove unhelpful hint from trivial bound errors)
 - rust-lang/rust#153152 (Migration of LintDiagnostic - part 5)
 - rust-lang/rust#153177 (disable the ptr_fragment_in_final test on s390x)
 - rust-lang/rust#153221 (Add release notes for 1.94.0)
 - rust-lang/rust#153279 (feat: Provide an '.item_kind()' method on ItemEnum)
 - rust-lang/rust#153297 (Update the name of the Hermit operating system)
 - rust-lang/rust#153309 (Cleanup of c-variadic link test)
2026-03-03 07:00:49 +00:00
Jonathan Brouwer cec85ce732 Rollup merge of #153309 - folkertdev:c-variadic-link-test-cleanup, r=jieyouxu
Cleanup of c-variadic link test

Some changes pulled out of https://github.com/rust-lang/rust/pull/152980 that are just cosmetic, but will help make the code run on embedded targets.

r? jieyouxu
2026-03-03 07:14:18 +01:00
Jonathan Brouwer 8845cc0c67 Rollup merge of #153297 - Gelbpunkt:hermitcore-hermit, r=joboet
Update the name of the Hermit operating system

The HermitCore name was dropped a while ago, the project is now simply called "Hermit". See for example [the website](https://hermit-os.org/).

cc @stlankes @mkroening
2026-03-03 07:14:17 +01:00
Jonathan Brouwer 3bb52457bb Rollup merge of #153279 - LukeMathWalker:add-kind-method, r=aDotInTheVoid
feat: Provide an '.item_kind()' method on ItemEnum

A little helper method which I found myself adding over and over again in all the projects I maintain which depend on `rustdoc-json-types`.

r? @aDotInTheVoid
2026-03-03 07:14:17 +01:00
Jonathan Brouwer 3caa6aba9e Rollup merge of #153221 - Mark-Simulacrum:relnotes, r=cuviper
Add release notes for 1.94.0

Replaces https://github.com/rust-lang/rust/issues/151650.

r? cuviper
2026-03-03 07:14:16 +01:00
Jonathan Brouwer bb2b75b82c Rollup merge of #153177 - fneddy:s390x_fix_test_ptr_fragments_final, r=fmease
disable the ptr_fragment_in_final test on s390x

on s390x 128bit types have a smaller alignment then on x86[^1]. This leads to the tests falling due to different errors emitted.

As this affects the same infrastructure as rust-lang/rust#149056 [^2] lets also for now disable the tests on s390x.

[^1]: s390x ELF ABI Table 1.1, Page 12 https://github.com/IBM/s390x-abi
[^2]: https://github.com/rust-lang/rust/pull/149056#issuecomment-3547543222
2026-03-03 07:14:16 +01:00
Jonathan Brouwer 4a56a45083 Rollup merge of #153152 - GuillaumeGomez:migrate-diag, r=JonathanBrouwer
Migration of LintDiagnostic - part 5

Part of https://github.com/rust-lang/rust/issues/153099.

With this, `rust_lint` is finally done, although the change of API of `decorate_builtin_lint` impacted a few other crates, although minimal, still needed to be mentioned.

r? @JonathanBrouwer
2026-03-03 07:14:15 +01:00
Jonathan Brouwer 87bd517707 Rollup merge of #153034 - arferreira:fix-trivial-bound-diagnostic, r=Kivooeo
Remove unhelpful hint from trivial bound errors

The `= help: see issue #48214` hint on trivial bound errors isn't useful, most users hitting these errors aren't trying to use the `trivial_bounds` feature. The `disabled_nightly_features` call already handles suggesting the feature gate on nightly.

Closes rust-lang/rust#152872
2026-03-03 07:14:15 +01:00
Jonathan Brouwer f9d22c04a5 Rollup merge of #153003 - notriddle:emit-outdir, r=fmease
rustdoc: make `--emit` and `--out-dir` mimic rustc

The behavior in the test case matches rustc's:

    test-dingus % ls
    main.rs
    test-dingus % mkdir foobar
    test-dingus % rustc --emit=dep-info main.rs --out-dir=foobar
    test-dingus % ls
    foobar  main.rs
    test-dingus % ls foobar
    main.d
    test-dingus % rustc --emit=dep-info=testfile.d main.rs --out-dir=foobar
    test-dingus % ls
    foobar          main.rs         testfile.d
    test-dingus % ls foobar
    main.d

CC https://github.com/rust-lang/rust/pull/146220#issuecomment-3936957755
2026-03-03 07:14:14 +01:00
Jonathan Brouwer e77eff6bc2 Rollup merge of #152966 - raushan728:reorganize-ui-issues-1, r=Kivooeo
Migrate 11 tests from tests/ui/issues to specific directories

Moved 11 regression tests from `tests/ui/issues` to their relevant subdirectories (`imports`, `pattern`, `lint`, and `typeck`).

* Added standard issue tracking comments at the top of each file.
* Relocated associated `aux-build` files.
* Ran `./x.py test --bless` successfully.
2026-03-03 07:14:13 +01:00
Jonathan Brouwer c4384629c0 Rollup merge of #153265 - asder8215:intersperse_changes, r=jhpratt
Clarified doc comments + added tests confirming current behavior for intersperse/intersperse_with

This PR builds on top of rust-lang/rust#152855. I just added clarifying comments to `intersperse`/`intersperse_with` about its guarantees for fused iterators (and how behavior for non-fused iterators are subject to change). I also added in tests for non-fused iterators demonstrating its current behavior; fused iterators are already tested for in existing tests for `intersperse`/`intersperse_with`.
2026-03-03 07:14:12 +01:00
Jonathan Brouwer 7174c100f4 Rollup merge of #153227 - kpreid:struct-missing-field, r=estebank
Don’t report missing fields in struct exprs with syntax errors.

@Noratrieb [told me](https://internals.rust-lang.org/t/custom-cargo-command-to-show-only-errors-avoid-setting-rustflags-every-time/24032/7?u=kpreid) that “it is a bug if this recovery causes follow-up errors that would not be there if the user fixed the first error.” So, here’s a contribution to hide a follow-up error that annoyed me recently.

Specifically, if the user writes a struct literal with a syntax error, such as

```rust
StructName { foo: 1 bar: 2 }
```

the compiler will no longer report that the field `bar` is missing in addition to the syntax error.

This is my first time attempting any change to the parser or AST; please let me know if there is a better way to do what I’ve done here. ~~The part I’m least happy with is the blast radius of adding another field to `hir::ExprKind::Struct`, but this seems to be in line with the style of the rest of the code. (If this were my own code, I would consider changing `hir::ExprKind::Struct` to a nested struct, the same way it is in `ast::ExprKind`.)~~ The additional information is now stored as an additional variant of `ast::StructRest` / `hir::StructTailExpr`.

**Note to reviewers:** I recommend reviewing each commit separately, and in the case of the first one with indentation changes ignored.
2026-03-03 07:14:12 +01:00
Jonathan Brouwer ca1b24406d Rollup merge of #152941 - RalfJung:abi-control, r=mati865
prefer actual ABI-controling fields over target.abi when making ABI decisions

We don't actually check that `abi` is consistent with the fields that control the ABI, e.g. one could set `llvm_abiname` to "ilp32e" on a riscv target without setting a matching `abi`. So, if we need to make actual decisions, better to use the source of truth we forward to LLVM than the informational string we forward to the user.

This is a breaking change for aarch64 JSON target specs: setting `abi` to "softfloat" is no longer enough; one has to also set `rustc_abi` to "softfloat". That is consistent with riscv and arm32, but it's still surprising. Cc @Darksonn in case this affects the Linux kernel.

Also see https://github.com/rust-lang/rust/pull/153035 which does something similar for PowerPC, and [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/De-spaghettifying.20ABI.20controls/with/575095372). Happy to delay this PR if someone has a better idea.

Cc @folkertdev @workingjubilee
2026-03-03 07:14:11 +01:00
bors d3877ec332 Auto merge of #151864 - aerooneqq:delegation-generics-propagation, r=petrochenkov
Implement AST -> HIR generics propagation in delegation



This PR adds support for generics propagation during AST -> HIR lowering and is a part of rust-lang/rust#118212.

# High-level design overview

## Motivation
The task is to generate generics for delegations (i.e. in this context we assume a function that is created for `reuse` statements) during AST -> HIR lowering. Then we want to propagate those generated params to generated method call (or default call) in delegation. This will help to solve issues like the following:

```rust
mod to_reuse {
    pub fn consts<const N: i32>() -> i32 {
        N
    }
}

reuse to_reuse::consts;
//~^ ERROR  type annotations needed

// DESUGARED CURRENT:
#[attr = Inline(Hint)]
fn consts() -> _ { to_reuse::consts() }

// DESUGARED DESIRED:
#[attr = Inline(Hint)]
fn consts<const N: i32>() -> _ { to_reuse::consts::<N>() }
```

Moreover, user can specify generic args in `reuse`, we need to propagate them (works now) and inherit signature with substituted generic args:

```rust
mod to_reuse {
    pub fn foo<T>(t: T) -> i32 {
        0
    }
}

reuse to_reuse::foo::<i32>;
//~^ ERROR  mismatched types

fn main() {
    foo(123);
}

error[E0308]: mismatched types
  --> src/main.rs:24:17
   |
19 |     pub fn foo<T>(t: T) -> i32 {
   |                - found this type parameter
...
24 | reuse to_reuse::foo::<i32>;
   |                 ^^^
   |                 |
   |                 expected `i32`, found type parameter `T`
   |                 arguments to this function are incorrect
   |
   = note:        expected type `i32`
           found type parameter `T`
```
In this case we want the delegation to have signature that have one `i32` parameter (not `T` parameter).
Considering all other cases, for now we want to preserve existing behavior, which was almost fully done (at this stage there are changes in behavior of delegations with placeholders and late-bound lifetimes).

## Main approach overview
The main approach is as follows:
- We determine generic params of delegee parent (now only trait can act as a parent as delegation to inherent impls is not yet supported) and delegee function,
- Based on presence of user-specified args in `reuse` statement (i.e. `reuse Trait::<'static, i32, 123>::foo::<String>`)  we either generate delegee generic params or not. If not, then we should include user-specified generic args into the signature of delegation,
- The general order of generic params generation is as following: 
   `[DELEGEE PARENT LIFETIMES, DELEGEE LIFETIMES, DELEGEE PARENT TYPES AND CONSTS, DELEGEE TYPES AND CONSTS]`,
- There are two possible generic params orderings (they differ only in a position of `Self` generic param):
  - When Self is after lifetimes, this happens only in free to trait delegation scenario, as we need to generate implicit Self param of the delegee trait,
  - When Self is in the beginning and we should not generate Self param, this is basically all other cases if there is an implicit Self generic param in delegation parent.
- Considering propagation, we do not propagate lifetimes for child, as at AST -> HIR lowering stage we can not know whether the lifetime is late-bound or early bound, so for now we do not propagate them at all. There is one more hack with child lifetimes, for the same reason we create predicates of kind `'a: 'a` in order to preserve all lifetimes in HIR, so for now we can generate more lifetimes params then needed. This will be partially fixed in one of next pull requests.

## Implementation details

- We obtain AST generics either from AST of a current crate if delegee is local or from external crate through `generics_of` of `tcx`. Next, as we want to generate new generic params we generate new node ids for them, remove default types and then invoke already existent routine for lowering AST generic params into HIR,
- If there are user-specified args in either parent or child parts of the path, we save HIR ids of those segments and pass them to `hir_analysis` part, where user-specified args are obtained, then lowered through existing API and then used during signature and predicates inheritance,
- If there are no user-specified args then we propagate generic args that correspond to generic params during generation of delegation,
- During signature inheritance we know whether parent or child generic args were specified by the user, if so, we should merge them with generic params (i.e. cases when parent args are specified and child args are not: `reuse Trait::<String>::foo`), next we use those generic args and mapping for delegee parent and child generic params into those args in order to fold delegee signature and delegee predicates.

## Tests

New tests were developed and can be found in `ast-hir-engine` folder, those tests cover all cases of delegation with different number of lifetimes, types, consts in generic params and different user-specified args cases (parent and child, parent/child only, none). 

## Edge cases
There are some edge cases worth mentioning. 

### Free to trait delegation. 
Consider this example:
```rust
trait Trait<'a, T, const N: usize> {
    fn foo<'x: 'x, A, B>(&self) {}
}

reuse Trait::foo;
```

As we are reusing from trait and delegee has `&self` param it means that delegation must have `Self` generic param:
```rust
fn foo<'a, 'x, Self, T, const N: usize, A, B>(self) {}
```

We inherit predicates from Self implicit generic param in `Trait`, thus we can pass to delegation anything that implements this trait. Now, consider the case when user explicitly specifies parent generic args.
```rust
reuse Trait::<'static, String, 1>::foo;
```

In this case we do not need to generate parent generic params, but we still need to generate `Self` in delegation (`DelegationGenerics::SelfAndUserSpecified` variant):
```rust
fn foo<'x, Self, A, B>(self) {}
```
User-specified generic arguments should be used to replace parent generic params in delegation, so if we had param of type `T` in `foo`, during signature inheritance we should replace it with user-specified `String` type.

### impl trait delegation
When we delegate from impl trait to something, we want the delegation to have signature that matches signature in trait. For this reason we already resolve delegation not to the actual delegee but to the trait method in order to inherit its signature. That is why when processing user-specified args when the caller kind is `impl trait` (`FnKind::AssocTraitImpl`), we discard parent user-specified args and replace them with those that are specified in trait header. In future we will also discard `child_args` but we need proper error handling for this case, so it will be addressed in one of future pull requests that are approximately specified in "Nearest future work" section.

## Nearest future work (approximate future pull requests):
- Late-bound lifetimes
- `impl Trait` params in functions
- Proper propagation of parent generics when generating method call
- ~Fix diagnostics duplication during lowering of user-specified types~
- Support for recursive delegations
- Self types support `reuse <u8 as Trait<_>>::foo as generic_arguments2`
- Decide what to do with infer args `reuse Trait::<_, _>::foo::<_>`
- Proper error handling when there is a mismatch between actual and expected args (impl trait case)

r? @petrochenkov
2026-03-03 02:39:40 +00:00
Mahdi Ali-Raihan c8d343e5c8 Added guarantee and non-guarantee comments + tests for intersperse/intersperse_with regarding fused/non-fused iterators 2026-03-02 19:44:15 -05:00
Jonathan Brouwer 8a824ee301 Fix performance of early lints 2026-03-02 23:47:01 +01:00
Guillaume Gomez 2be5835a7e Make DiagEmitter::emit take self by value 2026-03-02 23:46:04 +01:00
Guillaume Gomez 62cb683ff5 Remove duplicated code for delayed lints between rustc_hir_analysis and rustdoc 2026-03-02 23:46:04 +01:00
Guillaume Gomez 71e2ecd149 Simplify rustc_lint::EmitDiag by removing Lint from its API 2026-03-02 23:46:04 +01:00
Guillaume Gomez 22b4a8cb86 Update decorate_builtin_lint to use Diagnostic instead of LintDiagnostic 2026-03-02 23:46:04 +01:00
Guillaume Gomez c1037ce357 Migrate most rustc_lint lint to Diagnostic 2026-03-02 23:46:04 +01:00
Guillaume Gomez 6dc23a591e Remove LintContext::emit_span_lint_lazy 2026-03-02 23:46:04 +01:00
Guillaume Gomez 74674820aa Remove unused LintContext::emit_lint method 2026-03-02 23:46:04 +01:00
Mark Rousskov ff1a98aa0d Add release notes for 1.94.0
* Adjust macro description
* Copy Cargo's release notes for more details
* Apply suggestions from code review

Co-authored-by: 许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>
Co-authored-by: alexey semenyuk <alexsemenyuk88@gmail.com>
Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
2026-03-02 14:44:25 -08:00
Folkert de Vries c9e44b0ce3 c-variadic: remove f64::floor use from test 2026-03-02 21:51:57 +01:00
Folkert de Vries 609bffdee7 c-variadic: remove CString use from test 2026-03-02 21:51:56 +01:00
bors ec818fda36 Auto merge of #153304 - JonathanBrouwer:rollup-hDz4T7p, r=JonathanBrouwer
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#153153 (add tests for thumb interworking)
 - rust-lang/rust#151780 (Updated slice tests to pass for big endian hosts for `multiple-option-or-permutations.rs`)
 - rust-lang/rust#151962 (Fix next-solver ICE on PointeeSized goals)
 - rust-lang/rust#153015 (core: make atomic primitives type aliases of `Atomic<T>`)
 - rust-lang/rust#153161 (Rejig `rustc_with_all_queries!`)
 - rust-lang/rust#153191 (  don't emit `unused_results` lint for tuples of "trivial" types )
 - rust-lang/rust#153273 (vec/mod.rs: add missing period in "ie." in docs)
 - rust-lang/rust#153292 (tests: codegen-llvm: vec-calloc: do not require the uwtable attribute)
 - rust-lang/rust#153293 (library: std: process: skip tests on Hermit)
 - rust-lang/rust#153301 (Do not ping kobzol on rustc-dev-guide changes)
2026-03-02 19:11:30 +00:00
Jonathan Brouwer 273b3aacdd Rollup merge of #153301 - Kobzol:remove-kobzol-rdg-ping, r=Kobzol
Do not ping kobzol on rustc-dev-guide changes

I don't really react to those pings anyway.
2026-03-02 20:10:37 +01:00
Jonathan Brouwer b2dfd76fff Rollup merge of #153293 - Gelbpunkt:skip-process-tests-hermit, r=joboet
library: std: process: skip tests on Hermit

Hermit does not yet support spawning processes.
2026-03-02 20:10:37 +01:00
Jonathan Brouwer bcfe737e50 Rollup merge of #153292 - Gelbpunkt:vec-calloc-uwtables-optional, r=jieyouxu
tests: codegen-llvm: vec-calloc: do not require the uwtable attribute

The `uwtable` attribute does not get emitted on targets that don't have unwinding tables, such as `x86_64-unknown-hermit`.
2026-03-02 20:10:36 +01:00
Jonathan Brouwer 671dc27f69 Rollup merge of #153273 - DanielEScherzer:patch-2, r=joboet
vec/mod.rs: add missing period in "ie." in docs

"i.e." is short for the Latin "id est" and thus both letters should be followed by periods.
2026-03-02 20:10:36 +01:00
Jonathan Brouwer 2fe8b01461 Rollup merge of #153191 - WaffleLapkin:shouldnt_use_trivial_tuples, r=jdonszelmann
don't emit `unused_results` lint for tuples of "trivial" types

r? @jdonszelmann
Fixes rust-lang/rust#153144.

So it turns out rust-lang/rust#153018 had a sneaky behavior change in the way tuples are handled and the old behavior wasn't tested.

Consider these tuples:

```rust
((), ());
((), 1);
```

Neither of them is `must_use`, so they are potential candidates for `unused_results`. So the question is whatever said tuples are considered "trivial" and thus if they end up emitting `unused_results` or not.

Here is a comparison table between PRs:
<table>
<tr><td>stable</td><td>After #153018</td><td>After this PR</td></tr><tr><td>

```rust
((), ()); // trivial
((), 1); // trivial
```
</td>
<td>

```rust
((), ()); //~ warn: unused_results
((), 1); //~ warn: unused_results
```
</td>
<td>

```rust
((), ()); // trivial
((), 1); //~ warn: unused_results
```
</td>
</tr>
  <tr>
    <td>

tuples are trivial if **any** of their fields are trivial
    </td>
    <td>

tuples are never trivial
    </td>
    <td>

tuples are trivial if **all** of their fields are trivial
    </td>
  </tr>
</table>
2026-03-02 20:10:35 +01:00
Jonathan Brouwer 34fd06ef66 Rollup merge of #153161 - nnethercote:rejig-rustc_with_all_queries, r=Zalathar
Rejig `rustc_with_all_queries!`

There are three things relating to `rustc_with_all_queries!` that have been bugging me.

- `rustc_with_all_queries!`'s ability to receive `extra_fake_queries` lines like `[] fn Null(()) -> (),` where the only real thing is the `Null`, and everything is just pretending to be a normal query, ugh.
- `make_dep_kind_array!`: a macro produced by one macro (`define_dep_nodes!`) and used by another macro (`define_queries!`) in another crate, ugh.
- The `_dep_kind_vtable_ctors` module, which is a special module with no actual code that serves just a way of collecting vtable constructors from two different places so they can be referred to by `make_dep_kind_array!`, ugh.

By making some adjustments to how `rustc_with_all_queries!` works, all three of these things are eliminated.

r? @Zalathar
2026-03-02 20:10:35 +01:00
Jonathan Brouwer ef4cff2ea3 Rollup merge of #153015 - joboet:atomic_alias_generic, r=jhpratt
core: make atomic primitives type aliases of `Atomic<T>`

Tracking issue: https://github.com/rust-lang/rust/issues/130539

This makes `AtomicI32` and friends type aliases of `Atomic<T>` by encoding their alignment requirements via the use of an internal `Storage` associated type. This is also used to encode that `AtomicBool` store a `u8` internally.

Modulo the `Send`/`Sync` implementations, this PR does not move any trait implementations, methods or associated functions – I'll leave that for another PR.
2026-03-02 20:10:34 +01:00
Jonathan Brouwer 4a3d3cb486 Rollup merge of #151962 - TaKO8Ki:pointee-sized-next-solver-ice, r=lcnr
Fix next-solver ICE on PointeeSized goals

Fixes rust-lang/rust#151957
2026-03-02 20:10:33 +01:00
Jonathan Brouwer 1654b17cd8 Rollup merge of #151780 - rwardd:ryan/fix-option-permutations, r=nikic
Updated slice tests to pass for big endian hosts for `multiple-option-or-permutations.rs`

It was discovered that the FileCheck tests when performing an `Option::or` operation on a slice was failing when tested on a big endian host.

The compiler explorer link is here outlining the codegen output differences - https://rust.godbolt.org/z/qdE7d3G4f

This MR relaxes the constraints for the `*slice_u8` variants of the test (by changing `CHECK-NEXT` to `CHECK-DAG`), whilst still maintaining the check for the necessary `or` logic.

Huge thanks to @Gelbpunkt for identifying this issue! It has been confirmed that this fix passes on a big endian target now as well.

Closes rust-lang/rust#151718
2026-03-02 20:10:33 +01:00
Jonathan Brouwer 6d16e3b73b Rollup merge of #153153 - folkertdev:thumb-and-arm, r=jieyouxu
add tests for thumb interworking

fixes https://github.com/rust-lang/rust/issues/151946

thumb programs (using a 16-bit instruction encoding) can call arm (32-bit instruction encoding) code. Doing so requires switching from thumb mode to arm mode, executing, then switching back. Test that this happens correctly, in particular for naked functions.

cc @thejpster can you confirm the output looks good here and that we're testing all of the relevant things
r? jieyouxu  because this is doing some interesting things testing-wise

I believe that we need run-make here because we need to look at the assembly after the linker has run. It will correct calls from thumb to arm: depending on the thumb version this either uses a special instruction or inserts  a call to a thunk that handles switching between thumb and arm mode.
2026-03-02 20:10:31 +01:00
Jakub Beránek 778e602bb5 Do not ping kobzol on rustc-dev-guide changes 2026-03-02 19:27:28 +01:00
Aelin Reidel cc64a37912 library: std: hermit: Update name of the Hermit operating system
The HermitCore name was dropped a while ago, the project is now simply
called "Hermit".
2026-03-02 17:26:44 +01:00
Aelin Reidel 8ecb3e4fb9 librustdoc: Update the name of the Hermit operating system
The HermitCore name was dropped a while ago, the project is now simply
called "Hermit".
2026-03-02 17:26:37 +01:00
Aelin Reidel f1a4d0cd37 library: std: process: skip tests on Hermit
Hermit does not yet support spawning processes.
2026-03-02 15:50:41 +01:00
Aelin Reidel b4d36db16e tests: codegen-llvm: vec-calloc: do not require the uwtable attribute
The uwtable attribute does not get emitted on targets that don't have
unwinding tables, such as x86_64-unknown-hermit.
2026-03-02 15:31:59 +01:00
aerooneqq 0daab3ad6a Implement AST -> HIR generics propagation in delegation 2026-03-02 15:29:02 +03:00
bors 8ddf4ef064 Auto merge of #153278 - JonathanBrouwer:rollup-k88jgqQ, r=JonathanBrouwer
Rollup of 6 pull requests

Successful merges:

 - rust-lang/rust#153169 (Various small query cleanups)
 - rust-lang/rust#152304 (stabilize new RangeToInclusive type)
 - rust-lang/rust#153046 (Couple of cg_ssa refactorings)
 - rust-lang/rust#153090 (elf-raw-dylib: set type for functions)
 - rust-lang/rust#153225 (tests/ui/asm: add annotations for reference rules)
 - rust-lang/rust#153233 (test: add regression test for fuzzy_provenance_casts lint ICE)
2026-03-02 12:02:00 +00:00
joboet e9ca34fe64 reference more reliable items in rustdoc tests 2026-03-02 11:57:04 +01:00
joboet 88cec3a1c0 update debuginfo visualizers and tests 2026-03-02 11:57:03 +01:00
Luca Palmieri 931e2c4e43 feat: Provide an '.item_kind()' method on ItemEnum 2026-03-02 11:03:39 +01:00
Folkert de Vries 2d8ceee19c add tests for a thumb program calling arm code
and in particular for naked functions in that scenario
2026-03-02 10:53:51 +01:00